僅個人學習記錄仆救,毫無參考性? 望知悉:小4∶住分苇!
零:面向?qū)ο?/b>
指多個class之間的關系,一般有Composition「復合」屁桑、Inheritance「繼承」
實心菱形表示有東西
壹:Composition「復合」11. 01:58
指class中包含(擁有)其他的一個或者多個東西(class等)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 注:代碼會由編譯器自動添加医寿,但只能調(diào)用默認的構造函數(shù),
生命期同步蘑斧,當外部存在時靖秩,內(nèi)部必然也存在
貳:Delegation(委托)11.20:49
指class通過reference「指針」指向另一個或多個東西「class等」
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 注:一般都是講reference「引用」,不講pointer「指針」
生命期不同步竖瘾,通過指針當外部需要時才會創(chuàng)建委托對象
有名的寫法之一:Handle/Body「pimpl」沟突,無論Body如何改動,Handle不必重復編譯
叁:Inheritance(繼承)11.32:23
語法:三種語法繼承捕传,一般與虛函數(shù)搭配
public「公開的」:對于對象和成員函數(shù)都是可見的惠拭,即可以引用
protected「受保護的」:對于成員函數(shù)是可見的,但對于對象來說是不可見的庸论,這個聲明主要是用在繼承 中
private「私有的」:對于成員函數(shù)是可見的职辅,對于對象是不可見的
繼承的關系中所有的關系都可以被繼承下來:
數(shù)據(jù)的繼承:繼承的是內(nèi)存
函數(shù)的繼承:是函數(shù)的調(diào)用權
注:base class「父類的」的dtor「析構函數(shù)」必須是virtual「虛函數(shù)」,否則會出現(xiàn)undefined behavior「未定義的行為」
良好習慣:只要calss將會成為一個父類聂示,就將dtor「析構函數(shù)」罐农,設為virtual「虛函數(shù)」
肆:虛函數(shù)12.0:0
語法:在任何一個成員函數(shù)之前加上virtual關鍵字,就成為虛函數(shù)
non virtual函數(shù):不希望dericed class「子類」重新定義「override 覆寫」
virtual函數(shù):? ? ? ? 希望dericed class重新定義「override 覆寫」,有默認定義
pure virtual函數(shù):必須dericed class「子類」重新定義「override覆寫」催什,無默認定義