派生類別和基底類別之間的指標到指標的隱式轉換
處理派生類別和基底類別之間的指標到指標轉換時類別中,遇到的一個常見錯誤是無法將衍生類別(Child) 的指標到指標隱式轉換為基底類別(Base) 的指標。這是因為這樣的轉換可能會導致意外和潛在的危險情況。
考慮提供的範例程式:
<code class="cpp">class Base { }; class Child : public Base { }; int main() { Child *c = new Child(); Base *b = c; Child **cc = &c; Base **bb = cc; // error: invalid conversion from ‘Child**’ to ‘Base**’ }</code>
出現錯誤的原因是編譯器阻止了 cc (a Child )到 bb(基礎)。此禁止的根本原因是為了防止 bb 所指向的物件中潛在的不一致。如果允許這樣的轉換,可能會導致 bb 指向不是從 Child 派生的 Base 實例的情況。
要解決此問題,有兩種方法:
以上是為什麼不能將派生類別的指標到指標隱式轉換為基底類別的指標到指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!