父類指標可以指向子類物件,反之則不能。

2021-10-04 02:34:25 字數 757 閱讀 1377

最近準備考研複試內容,都是c/c++選擇題,做點筆記。

簡單來說,c++的多型就是靠父類指標指向子類物件+虛函式來實現的。父類指標指向子類物件,可以呼叫子類從父類繼承來的那一部分,但如果父類中宣告了virtual,則可以呼叫子類中的方法,這樣就實現了多型。而子類指標指向父類物件,可能會呼叫到父類中沒用的方法,因此這是不對的。

至於兩類指標的互換是另乙個問題。

例如:class a

;class b:public a

從記憶體的來看

如a:|—乙個int資料大小—|

|------(aa資料)----|

而b則是:

|–乙個int資料大小—|佔乙個int資料大小–|

|-- 從a中繼承而來—|---(bb資料)------|

當定義乙個基類型別的指標時,例如:a p;

這時,這個指標指向的是a型別的資料。

當p指標指向派生類的時候,因為p是a型別的指標,所以p只解釋為a型別資料的長度,即:

|–乙個int資料大小–|--乙個int資料大小–|

|從a中繼承而來----|—(bb資料)-------|

|-p只指向這個區域–|

因此,當基類的指標(p)指向派生類的時候,只能操作派生類中從基類中繼承過來的資料。

指向派生類的指標,因為記憶體空間比基類長,會導致嚴重了後果,所以不允許派生類的指標指向基類。而基類的指標可以指向派生類。

c++的多型性能解決基類指標不能操作派生類的資料成員的問題。

為什麼父類指標可以指向子類反之則不行

分類 c c c c 2010 11 14 00 28 193人閱讀收藏 舉報例如 class a class b public a 從記憶體的來看 如a 佔乙個int資料大小 aa資料 而b則是 佔乙個int資料大小 佔乙個int資料大小 從a中繼承而來 bb資料 當定義乙個基類型別的指標時 a ...

為什麼父類指標可以指向子類,反之則不行?

為什麼父類指標可以指向子類反之則不行?例如 cpp view plain copy class a class b public a 從記憶體的來看 如a plain view plain copy 先看a 佔乙個int資料大小 aa資料 而b則是 佔乙個int資料大小 佔乙個int資料大小 從a中...

c 父類指標指向子類物件

父類子類指標函式呼叫注意事項 1,如果以乙個基礎類指標指向乙個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以乙個衍生類指標指向乙個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾...