繼承

單繼承
class base
{
public:
virtual void fun() {}
protected:
int var
};

base內(nèi)存結(jié)構(gòu):
0:vfptr -> base::fun
4:var

class A : public base
{
public:
virtual void fun() {}
virtual void funA() {}
protected:
int varA
};

A內(nèi)存結(jié)構(gòu):
0:vfptr -> A::fun A::funA
4:var
8:varA

多重繼承

class B : public base
{
public:
virtual void fun() {}
virtual void funB() {}
protected:
int varB
};

class C : public A, public B
{
public:
virtual void fun() {}
virtual void funC() {}
protected:
int varC
};

C內(nèi)存結(jié)構(gòu):
0:vfptr -> A::fun A::funA C::funC
4:var
8:varA
12:vfprt -> B::fun B::funB
16:var
20:varB
24:varC

虛擬繼承

class C : virtual public A, virtual public B
{
public:
virtual void fun() {}
virtual void funC() {}
protected:
int varC
};

C內(nèi)存結(jié)構(gòu):
0:vfptr -> A::funA C::funC
4:vbprt -> -4 24
8:varA
12:vfprt -> B::funB
16:vbptr -> -4 12
20:varB
24:varC
28:vfprt -> C::fun
32:var

構(gòu)造函數(shù)
默認(rèn)構(gòu)造函數(shù)唧取,兩種情況维贺,一是參數(shù)為空的構(gòu)造函數(shù)耿战、一個是參數(shù)都有默認(rèn)值的構(gòu)造函數(shù)

構(gòu)造函數(shù)指向順序:虛基類(繼承順序) -> 直接父類(繼承順序) -> 自己類成員構(gòu)造函數(shù)(聲明順序) -> 自己的構(gòu)造函數(shù)

如果無顯示調(diào)用構(gòu)造函數(shù)姨蝴,則調(diào)用默認(rèn)構(gòu)造函數(shù),如果沒有默認(rèn)構(gòu)造函數(shù)策幼,則編譯器創(chuàng)建一個默認(rèn)構(gòu)造函數(shù)邑时。

析構(gòu)函數(shù)
與構(gòu)造函數(shù)相反,虛構(gòu)函數(shù)必須是虛函數(shù)特姐,這樣保證調(diào)用時從繼承類開始執(zhí)行晶丘,如果部署虛函數(shù),有可能只調(diào)用基類析構(gòu)函數(shù)唐含,而沒有析構(gòu)繼承類的

拷貝構(gòu)造函數(shù)
無定義拷貝構(gòu)造函數(shù)浅浮,則按構(gòu)造函數(shù)調(diào)用順序調(diào)用相應(yīng)父類、類成員捷枯、自己的的默認(rèn)拷貝構(gòu)造函數(shù)
有顯示定義拷貝構(gòu)造函數(shù)滚秩,則按構(gòu)造函數(shù)調(diào)用順序調(diào)用相應(yīng)父類、類成員铜靶、自己的的默認(rèn)構(gòu)造函數(shù)(如果有顯示初始父類,則調(diào)用相應(yīng)的構(gòu)造函數(shù),無則調(diào)用默認(rèn)構(gòu)造函數(shù))

賦值操作符號重載
如果有顯示定義賦值操作符號争剿,則不調(diào)用父類的已艰,只執(zhí)行自己的,對于父類部分操作需要專門代碼處理
如果沒有顯示定義賦值操作符號蚕苇,則按構(gòu)造函數(shù)執(zhí)行順序哩掺,先調(diào)用虛基類,直接父類涩笤,及自己的嚼吞。

多重繼承的指針賦值:
C objc;
A pobja=&objc; //
B pobjb=&objc; //編譯器做了調(diào)整

一般指針類型轉(zhuǎn)換,都是不修改指針的值蹬碧,只改變指針的類型(指針指向的內(nèi)存的解釋方式)舱禽,多重繼承下的指針轉(zhuǎn)換會做調(diào)整。

pobja 地址與 objc一致
pobjb 地址與 objc不一致恩沽,差A(yù)長度

assert(pobja == pobjb) 編譯器做調(diào)整

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末誊稚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子罗心,更是在濱河造成了極大的恐慌里伯,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渤闷,死亡現(xiàn)場離奇詭異疾瓮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)飒箭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門狼电,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人补憾,你說我怎么就攤上這事漫萄。” “怎么了盈匾?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵腾务,是天一觀的道長。 經(jīng)常有香客問我削饵,道長岩瘦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任窿撬,我火速辦了婚禮启昧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劈伴。我一直安慰自己密末,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著严里,像睡著了一般新啼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刹碾,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天燥撞,我揣著相機(jī)與錄音,去河邊找鬼迷帜。 笑死物舒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戏锹。 我是一名探鬼主播冠胯,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼景用!你這毒婦竟也來了涵叮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤伞插,失蹤者是張志新(化名)和其女友劉穎割粮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體媚污,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舀瓢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耗美。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片京髓。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖商架,靈堂內(nèi)的尸體忽然破棺而出堰怨,到底是詐尸還是另有隱情,我是刑警寧澤蛇摸,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布备图,位于F島的核電站,受9級特大地震影響赶袄,放射性物質(zhì)發(fā)生泄漏揽涮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一饿肺、第九天 我趴在偏房一處隱蔽的房頂上張望蒋困。 院中可真熱鬧,春花似錦敬辣、人聲如沸雪标。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽村刨。三九已至门粪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烹困,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工乾吻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留髓梅,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓绎签,卻偏偏與公主長得像枯饿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诡必,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 繼承和多態(tài) 1. 繼承的優(yōu)缺點(diǎn) 優(yōu)點(diǎn):(1)子類可以靈活地改變父類中的已有方法奢方;(2)能夠最大限度的實(shí)現(xiàn)代碼重用。...
    MinoyJet閱讀 629評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理爸舒,服務(wù)發(fā)現(xiàn)蟋字,斷路器,智...
    卡卡羅2017閱讀 134,716評論 18 139
  • C++ 基礎(chǔ) 概念及工方式 保持已有類的特性而構(gòu)造新類的過程稱為繼承扭勉。在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新類的過...
    I踏雪尋梅閱讀 302評論 0 2
  • 【健康】 1. 早睡早起堅持踐行鹊奖,早上5:45起,晚上11:00-11:30睡覺涂炎。 2.每天堅持健身40分鐘 這周...
    西貢鮑鮑閱讀 292評論 0 1
  • Space and Time(second chapter ) Day. 4 Vocabulary 1忠聚,at re...
    JohnsonZora閱讀 826評論 0 3