Boolan C++面向?qū)ο蟾呒?jí)編程(上) 第三周筆記 暗影行者

第三周結(jié)構(gòu)框圖:

11.組合與繼承

12.虛函數(shù)與多態(tài)

13.委托相關(guān)設(shè)計(jì)

14.復(fù)合&繼承關(guān)系下的構(gòu)造和析構(gòu)

注:部分筆記寫(xiě)在打印出的課件上,如下第三張圖片上的字

11.組合與繼承:

前兩周講的是單個(gè)類(lèi)的設(shè)計(jì),即基于對(duì)象編程
本周是講類(lèi)與類(lèi)之間的關(guān)系宗雇,即面向?qū)ο缶幊?

學(xué)習(xí)類(lèi)與類(lèi)之間的關(guān)系碉京,我們只需要了解以下三種關(guān)系即可:


這里寫(xiě)圖片描述

先找最簡(jiǎn)單的來(lái)講:


這里寫(xiě)圖片描述
初學(xué)者可能不習(xí)慣看上面的,現(xiàn)在把deque替換進(jìn)去:
這里寫(xiě)圖片描述
queue中含有deque处硬,即queue和deque是復(fù)合關(guān)系霉咨。(即只要A含有B蛙紫,則就是一種復(fù)合關(guān)系)。但看代碼躯护,queue中的功能惊来,都由dequeue完成。Dequeu的功能比較強(qiáng)大棺滞,此例子比較特殊裁蚁,是一種Adapter(改造)模式(設(shè)計(jì)模式一種)。

從內(nèi)存角度分析上例:


這里寫(xiě)圖片描述

復(fù)合關(guān)系下的構(gòu)造和析構(gòu):

這里寫(xiě)圖片描述
構(gòu)造继准,由內(nèi)而外枉证!  析構(gòu),由外而內(nèi)移必!

編譯器會(huì)自己去構(gòu)造Component對(duì)象
container的構(gòu)造函數(shù)首先調(diào)用component的default構(gòu)造函數(shù)

Container的析構(gòu)先調(diào)用自己室谚,然后再調(diào)用Component的析構(gòu)函數(shù)(編譯器幫助完成,我們只要管理好Container的構(gòu)造和析構(gòu)就可以)

Delegation委托:

一種微弱的組合關(guān)系崔泵,不是含有component秒赤,而是含有component的指針
這里寫(xiě)圖片描述
左邊是接口,右邊是具體實(shí)現(xiàn)
詳細(xì)筆記請(qǐng)看照片上的文字
這里寫(xiě)圖片描述
繼承觀念:父類(lèi)的數(shù)據(jù)是被完整繼承下來(lái)的
繼承有三種方式憎瘸,public入篮,protected,private繼承幌甘。最常用的public繼承潮售,是說(shuō)is-a關(guān)系(不要認(rèn)為深?yuàn)W,is a就是說(shuō)明其是一種類(lèi)型)锅风。

繼承關(guān)系下的構(gòu)造和析構(gòu):


這里寫(xiě)圖片描述
析構(gòu)由內(nèi)而外才堅(jiān)固
析構(gòu)右外而內(nèi)才穩(wěn)定

12.虛函數(shù)與多態(tài):

筆記都在圖上了:


這里寫(xiě)圖片描述
繼承搭配上虛函數(shù)才可以強(qiáng)而有力
1.子類(lèi)可以繼承父類(lèi)的所有內(nèi)容酥诽,包括數(shù)據(jù)和函數(shù)。
2.從內(nèi)存角度皱埠,可以繼承數(shù)據(jù)
3.對(duì)于函數(shù)肮帐,不能從內(nèi)存角度理解,而是子類(lèi)繼承了父類(lèi)的函數(shù)調(diào)用權(quán)边器。

有虛函數(shù)的繼承:


這里寫(xiě)圖片描述

實(shí)現(xiàn)上圖的代碼:


這里寫(xiě)圖片描述

繼承關(guān)系下的構(gòu)造和析構(gòu):


這里寫(xiě)圖片描述

同樣泪姨,構(gòu)造由內(nèi)而外。
Derived的構(gòu)造函數(shù)首先調(diào)用Base的default構(gòu)造函數(shù)饰抒,然后調(diào)用Component的default構(gòu)造函數(shù)肮砾,然后才執(zhí)行自己。

析構(gòu)由外而內(nèi)袋坑。
Derived的析構(gòu)函數(shù)首先執(zhí)行自己仗处,然后調(diào)用Component的析構(gòu)函數(shù),然后調(diào)用Base的析構(gòu)函數(shù)

重點(diǎn)內(nèi)容
看看下圖用到了什么:

這里寫(xiě)圖片描述

上圖用到了委托和繼承組合:


這里寫(xiě)圖片描述
1.委托和繼承組合是組合中最強(qiáng)大的一種
2.父類(lèi)Observer用來(lái)觀察左邊枣宫,左邊有使用到C++容器婆誓,并且有遍歷所有觀察者的動(dòng)作。

13.委托相關(guān)設(shè)計(jì):

設(shè)計(jì)模式之composite:


這里寫(xiě)圖片描述
設(shè)計(jì)模式較復(fù)雜也颤,請(qǐng)看照片上筆記吧

設(shè)計(jì)模式之Prototype:


這里寫(xiě)圖片描述

Prototype父類(lèi)代碼:


這里寫(xiě)圖片描述

Prototype子類(lèi)代碼:


這里寫(xiě)圖片描述

14.復(fù)合&繼承關(guān)系下的構(gòu)造和析構(gòu):

繼承關(guān)系下的構(gòu)造和析構(gòu):


這里寫(xiě)圖片描述
構(gòu)造由內(nèi)而外洋幻,析構(gòu)由外而內(nèi)
注意:紅色的代碼是編譯器替我們加的,不用自己編寫(xiě)翅娶。

復(fù)合關(guān)系下的構(gòu)造和析構(gòu):


這里寫(xiě)圖片描述
同樣文留,構(gòu)造由內(nèi)而外好唯,析構(gòu)由外而內(nèi)

繼承&復(fù)合關(guān)系下的構(gòu)造和析構(gòu):


這里寫(xiě)圖片描述
仍然,構(gòu)造由內(nèi)而外燥翅,析構(gòu)由外而內(nèi)
大部分編譯器骑篙,構(gòu)造時(shí)先調(diào)用父類(lèi)的構(gòu)造函數(shù),再調(diào)用復(fù)合成分的森书;析構(gòu)時(shí)次序相反靶端。

拓展:

面向?qū)ο缶幊袒谌齻€(gè)基本概念:

1.數(shù)據(jù)抽象-類(lèi)
2.繼承-基類(lèi)/派生類(lèi)
3.動(dòng)態(tài)綁定-基類(lèi)的函數(shù)or派生類(lèi)的函數(shù)

面向?qū)ο缶幊谈攀觯?/p>

1.面向?qū)ο缶幊痰年P(guān)鍵思想是多態(tài)性(polymorphism)。多態(tài)性派生于一個(gè)希臘單詞凛膏,意思是“許多形態(tài)”杨名,之所以稱(chēng)通過(guò)繼承而相關(guān)聯(lián)的類(lèi)型為多態(tài)類(lèi)型,是因?yàn)樵谠S多情況下可以互換地使用派生類(lèi)型或基類(lèi)型的“許多形態(tài)”猖毫。在C++中台谍,多態(tài)性僅用于通過(guò)繼承而相關(guān)聯(lián)的類(lèi)型的引用或指針。
2.在C++中鄙麦,基類(lèi)必須指出希望派生類(lèi)重寫(xiě)哪些函數(shù)典唇,定義為virtual的函數(shù)是基類(lèi)期待派生類(lèi)重新定義的,基類(lèi)希望派生類(lèi)繼承的函數(shù)不能定義為虛函數(shù)胯府。
3.在C++中介衔,通過(guò)基類(lèi)的引用(或指針)調(diào)用虛函數(shù)時(shí),發(fā)生動(dòng)態(tài)綁定骂因。引用(或指針)既可以指向基類(lèi)對(duì)象也可以指向派生類(lèi)對(duì)象炎咖,這一事實(shí)是動(dòng)態(tài)綁定的關(guān)鍵。用引用(或指針)調(diào)用的虛函數(shù)在運(yùn)行時(shí)確定寒波,被調(diào)用的函數(shù)是引用(或指針)所指對(duì)象的實(shí)際類(lèi)型所定義的乘盼。
4.引用和指針的靜態(tài)類(lèi)型與動(dòng)態(tài)類(lèi)型可以不同,這是 C++ 用以支持多態(tài)性的基石俄烁。

詳請(qǐng)參考C++Prime 面向?qū)ο缶幊陶鹿?jié) 謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绸栅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子页屠,更是在濱河造成了極大的恐慌粹胯,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辰企,死亡現(xiàn)場(chǎng)離奇詭異风纠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)牢贸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)竹观,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事臭增《矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵速址,是天一觀的道長(zhǎng)玩焰。 經(jīng)常有香客問(wèn)我由驹,道長(zhǎng)芍锚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任蔓榄,我火速辦了婚禮并炮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甥郑。我一直安慰自己逃魄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布澜搅。 她就那樣靜靜地躺著伍俘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勉躺。 梳的紋絲不亂的頭發(fā)上癌瘾,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音饵溅,去河邊找鬼妨退。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜕企,可吹牛的內(nèi)容都是我干的咬荷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼轻掩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼幸乒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起唇牧,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罕扎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后奋构,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體壳影,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年弥臼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宴咧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡径缅,死狀恐怖掺栅,靈堂內(nèi)的尸體忽然破棺而出烙肺,到底是詐尸還是另有隱情,我是刑警寧澤氧卧,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布桃笙,位于F島的核電站,受9級(jí)特大地震影響沙绝,放射性物質(zhì)發(fā)生泄漏搏明。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一闪檬、第九天 我趴在偏房一處隱蔽的房頂上張望星著。 院中可真熱鬧,春花似錦粗悯、人聲如沸虚循。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)横缔。三九已至,卻和暖如春衫哥,著一層夾襖步出監(jiān)牢的瞬間茎刚,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工炕檩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斗蒋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓笛质,卻偏偏與公主長(zhǎng)得像泉沾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妇押,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

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