-
C++中派生類對象可以賦值給基類,子類對象可以賦值給父類;
反之不可以。
用父類指針去指向子類對象也只能使用父類擁有的數據成員和成員函數
查看全部 -
C++中父類和子類用法相同時,只能進行隱藏不能進行重載。
查看全部 -
C++中的覆蓋和隱藏
隱藏:
訪問父類同名函數的方法:
查看全部 -
C++中protected繼承:
繼承到protected訪問限定符下:
private私有繼承:
查看全部 -
C++中public繼承中:
查看全部 -
C++中繼承的代碼書寫方法:
先調用父類構造函數在調用子類構造函數、先調用子類析構函數、在調用父類析構函數
查看全部 -
?虛基類是用關鍵字virtual聲明繼承的父類,即便該基類在多條鏈路上被一個子類繼承,但是該子類中只包含一個該虛基類的備份,虛基類主要用來解決繼承中的二義性問題,這就是是虛基類的作用所在。
視頻里描述有誤,這里應該Person是虛基類。
查看全部 -
菱形繼承時,頂層基類會創建兩個對象,產生兩份成員數據,這是我們不想要的;虛繼承可以解決該問題,這種情況下,頂層基類不會從子類中獲取數據而使用自己的默認參數。
查看全部 -
如果父類 子類定義了同一個函數或屬性,則子類對象只能直接訪問子類的函數和屬性,這叫做隱藏。 但是上述情況下,子類對象可以通過間接方式訪問父類函數和屬性。查看全部
-
非virtual場景: 如果將子類對象復制給父類對象,則子類屬性會覆蓋父類屬性,但是父類對象只能訪問父類函數,而不能訪問子類函數。
查看全部 -
重定義:B繼承A,C繼承A,定義B,C類的時候就重復定義了A,此時需要解決重定義的問題
#ifndef?PERSON_H ? ? ? ? ? ?? //#ifndef意思是如果沒有定義
#define?PERSON_H
……
#endif查看全部 -
1Person *p=new Soldier;//用Person的指針指向堆中 soldier的對象
p->play();
delete p;
p=NULL;
發現這個時候析構函數調用的時候只調用了父類的析構函數,并沒有調用子類的析構函數,所以這會產生內存的泄露,如果想釋放這段內存,要在父類和子類的析構函數前面都加上virtua
2? Soldier soldier;在棧中實例化對象會執行父類的析構函數。
查看全部 -
使用虛繼承時不會重復調用最頂層父類的構造函數和析構函數,頂層父類只能使用頂層父類構造函數的默認值,而無法從子類的子類中獲得傳入的參數
查看全部 -
重定義:B繼承A,C繼承A,定義B,C類的時候就重復定義了A,此時需要解決重定義的問題
#ifndef?PERSON_H ? ? ? ? ? ?? //#ifndef意思是如果沒有定義
#define?PERSON_H
……
#endif查看全部 -
Person *p=new Soldier;//用Person的指針指向堆中 soldier的對象
p->play();
delete p;
p=NULL;
發現這個時候析構函數調用的時候只調用了父類的析構函數,并沒有調用子類的析構函數,所以這會產生內存的泄露,如果想釋放這段內存,要在父類和子類的析構函數前面都加上virtua
查看全部
舉報