派生類別和基底類別之間指標到指標的隱式轉換
在C 中,以下程式碼會引發錯誤:
<code class="cpp">Child **cc = &c; Base **bb = cc;</code>
錯誤訊息表示沒有從Child** 到Base** 的隱式轉換。但是,允許將子指標分配給基指標:
<code class="cpp">Child *c = new Child(); Base *b = c;</code>
要理解為什麼會有這種差異,請考慮如果允許隱式轉換會發生什麼。然後可以執行以下操作:
<code class="cpp">*bb = new Base;</code>
這將導致 c 指向 Base 的實例,這將違反衍生類別和基底類別的概念。因此,C 禁止這種隱式轉換。
為了允許 Child** 和 Base** 之間的賦值,可以使用 C 風格的強制轉換或 reinterpret_cast,但它們會犧牲類型安全性。無法透過隱式強制轉換或 static_cast 來實現此轉換。
以上是為什麼我們不能將指標到指標隱式轉換為 C 中的基底類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!