首頁 > 後端開發 > C++ > 主體

為什麼我們不能將指標到指標隱式轉換為 C 中的基底類別?

Mary-Kate Olsen
發布: 2024-10-28 04:42:02
原創
275 人瀏覽過

Why Can't We Implicitly Convert a Pointer-to-Pointer to a Base Class in C  ?

派生類別和基底類別之間指標到指標的隱式轉換

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!