最近準備考研複試內容,都是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 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾...