-
隱藏:子類B和父類A有一個同名的成員函數,當子類繼承父類時,則會隱藏起父類同名的成員函數。
父子關系,成員同名,隱藏
查看全部 -
共有繼承:class A:public B
保護繼承:class A:protected B
私有繼承:class A:private B
查看全部 -
基類成員訪問屬性? 繼承方式? 派生類成員訪問屬性
private成員? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?無法訪問
protect成員? ? ? ? ? ? public? ? ? ? ? protected
public成員? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public
查看全部 -
1111111
查看全部 -
查看全部
-
#ifndef?PERSON_H?//#ifndef意思是如果沒有定義 #define?PERSON_H …… #endif
宏定義解決重定義類的問題
查看全部 -
虛繼承(virtual):為了解決繼承了兩次同一個父類從而有2個一樣的數據成員,使其只有一個。
【菱形繼承】B和C都繼承A,而D繼承了B和C
class Worker:virtual public Person{}; class Farmer:virtual public Person{}; class MigrantWorker:public Worker,public Farmer{};//農民工這個類中只含有一份Person
查看全部 -
多繼承關系如圖。
多繼承就是 C繼承于A,C又繼承于B。 C有A和B 2個父類。? 此處A與B的平行等級的。
查看全部 -
多重繼承寫法如截圖。
多重繼承就是 B從A繼承,C又從B繼承
查看全部 -
test1 以對象為參數,會實例化一個對象副本并在函數結束時自動銷毀;
test2?以引用為參數,不會產生新的對象,只是產生一個引用,因此不會調用構造/析構函數;
test3?以指針為參數,使用時以&p為參數,結果與test2相同
查看全部 -
C++多態和重寫:https://blog.csdn.net/weixin_42678507/article/details/89414998
析構函數重寫問題
基類中的析構函數如果是虛函數,那么派生類的析構函數就重寫了基類的析構函數。這里他們的函數名不相同,看起來違背了重寫的規則,其實不然,這里可以理解為編譯器對析構函數的名稱做了特殊處理,編譯后析構函數的名稱統一處理成destructor,這也說明的基類的析構函數最好寫成虛函數。
將析構函數定義為虛函數的原因:
因為基類指針可能指向派生類,當delete的時候,如果不定為虛函數,系統會直接調用基類的析構函數,這個時候派生類就有一部分沒有被釋放,就會造成可怕的內存泄漏問題。
若定義為虛函數構成多態,那么就會先調用派生類的析構函數然后派生類的析構函數會自動調用基類的析構函數,這個結果滿足我們的本意。
所以!在繼承的時候,盡量把基類的析構函數定義為虛函數,這樣繼承下去的派生類的析構函數也會被變成虛函數構成多態。
查看全部 -
子類可以給父類 賦值,? 子類中多余的成員變量會被截斷。
父類指針可以指向子類,但是也只能訪問子類中被繼承的部分。 子類指針無法指向父類。? 子類是isa的關系,是父類的子集。
查看全部 -
子類中可以使用父類的函數(包括隱藏的)
查看全部 -
當父類和子類的成員變量或成員函數同名時,子類調用的是子類的成員變量或成員函數。若想調父類的成員變量或成員函數加作用域? ?::
查看全部 -
B public繼承 A: A public --> B public A protected --> B protected A private --> B 不可訪問 B protected繼承 A: A public,protected --> B protected A private --> B無法訪問 B private繼承A: A public,protected -->B private A private --> B無法訪問
查看全部
舉報