Boolan_C++面向?qū)ο蟾呒壘幊蹋ㄏ拢第二周筆記

1捂人、 對象模型:關(guān)于vptr(虛函數(shù)表指針)和vtbl(虛函數(shù)表)

1.1 課堂內(nèi)容總結(jié)

關(guān)于vptr和vtbl(1)
關(guān)于vptr和vtbl(2)

(1)class中有虛函數(shù)時纵揍,對象中會多一個指針,0x409004刷允,內(nèi)存會多四字節(jié);

(2)classB繼承classA,classB有自己的vfunc1()树灶,有classA的vfunc2()纤怒,classC繼承classB趁啸,classC有自己的vfunc1()迅脐,有classB的vfunc2()(也就是classA的vfunc2());

(3)繼承是繼承的調(diào)用權(quán)优床,不是內(nèi)存大型辽啊州既;

(4)父類有虛函數(shù),子類肯定有虛函數(shù)萝映;

(5)子類中函數(shù)與父類同名吴叶,但不是一個函數(shù)。

1.2 課后補(bǔ)充學(xué)習(xí)

如果一個類包含了一個虛函數(shù)序臂,那么編譯器就會為該類產(chǎn)生一個虛擬函數(shù)表vtbl蚌卤,該表是類級別的,即該類的所有對象共享同一個vtbl奥秆,且向該類的對象中安插一個指針逊彭,指向該虛函數(shù)表。例如:

class A

{

public:

virtual void foo();

};

A a,b;

那么對象a,b的內(nèi)存中各有一個vptr构订,他們的值就是虛函數(shù)表的地址侮叮。

再考慮下面的情況:class B:public A{ };

那么類B有虛函數(shù)表嗎悼瘾?有囊榜,而且B的虛函數(shù)表和A的虛函數(shù)表不一樣,也就是說亥宿,不同的類有不同的虛函數(shù)表卸勺。在上面的情況,B的虛函數(shù)表中的虛函數(shù)地址和A的是一樣的烫扼,但是還是要為B產(chǎn)生一個虛函數(shù)表曙求。

2、對象模型:關(guān)于this

2.1 課堂內(nèi)容總結(jié)

關(guān)于this

(1)將常規(guī)的同一不變的放在onfileopen()中映企,將特殊的放在serialize()中悟狱;

(2)CDocument::OnFileOpen(&myDoc)中“&myDoc”為this,當(dāng)this指子類就符合向上轉(zhuǎn)型(保證安全)堰氓;

(3)C++中所有成員函數(shù)中一定有this參數(shù)挤渐。

2.2 課后補(bǔ)充學(xué)習(xí)

一個對象的this指針并不是對象本身的一部分,不會影響sizeof(對象)的結(jié)果豆赏。this作用域是在類內(nèi)部,當(dāng)在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(tài)成員的時候,編譯器會自動將對象本身的地址作為一個隱含參數(shù)傳遞給函數(shù)掷邦。也就是說白胀,即使你沒有寫上this指針,編譯器在編譯的時候也是加上this的抚岗,它作為非靜態(tài)成員函數(shù)的隱含形參或杠,對各成員的訪問均通過this進(jìn)行。

例如宣蔚,調(diào)用date.SetMonth(9) <===> SetMonth(&date, 9)向抢,this幫助完成了這一轉(zhuǎn)換 。

this的用法:一種情況就是胚委,在類的非靜態(tài)成員函數(shù)中返回類對象本身的時候挟鸠,直接使用 return *this;另外一種情況是當(dāng)參數(shù)與成員變量名相同時使用this指針亩冬,如this->n = n (不能寫成n = n)艘希。

更多更詳細(xì)的關(guān)于this的介紹見guirenwang的博客:http://blog.csdn.net/guirenwang/article/details/2611355

3、對象模型:關(guān)于Dynamic Binding

3.1 課堂內(nèi)容總結(jié)

靜態(tài)綁定


動態(tài)綁定

(1)靜態(tài)綁定一定是綁定某個地址硅急;

(2)動態(tài)綁定的三個條件:通過指針調(diào)用覆享,指針是向上轉(zhuǎn)型,調(diào)用的是虛函數(shù)营袜。

3.2 課后補(bǔ)充學(xué)習(xí)

對象的靜態(tài)類型:對象在聲明時采用的類型撒顿。是在編譯期確定的。對象的動態(tài)類型:目前所指對象的類型荚板。是在運(yùn)行期決定的凤壁。對象的動態(tài)類型可以更改,但是靜態(tài)類型無法更改啸驯。

靜態(tài)綁定:綁定的是對象的靜態(tài)類型客扎,某特性(比如函數(shù))依賴于對象的靜態(tài)類型,發(fā)生在編譯期罚斗。動態(tài)綁定:綁定的是對象的動態(tài)類型徙鱼,某特性(比如函數(shù))依賴于對象的動態(tài)類型,發(fā)生在運(yùn)行期针姿。

如何區(qū)分遺憾語句調(diào)用的是否為同一個函數(shù)袱吆,詳見常高偉的博客:http://blog.csdn.net/chgaowei/article/details/6427731

4、const

對于const與non-const的變量和成員函數(shù)距淫,最重要的是下表:

const與non-const的變量和成員函數(shù)配對

由上表可知绞绒,當(dāng)成員函數(shù)的const和non-const版本同時存在時,const object只能調(diào)用const版本榕暇,non-const object只能調(diào)用non-const版本蓬衡。

5喻杈、重載new(),delete()

5.1 課堂內(nèi)容總結(jié)

重載new(),delete()

5.2課后補(bǔ)充學(xué)習(xí)

(1)局部重載new和delete

局部重載new和delete,可以使用成員函數(shù)和友元函數(shù)兩種方式重載狰晚。使用new分配某個重載了new的累的對象空間時筒饰,先調(diào)用new的重載函數(shù),再調(diào)用該類的構(gòu)造函數(shù)壁晒,如果該類的構(gòu)造函數(shù)有參數(shù)要求瓷们,則必須給出對應(yīng)的實參。使用了delete釋放某個重載了delete的累的對象空間時秒咐,先調(diào)用類的析構(gòu)函數(shù)谬晕,然后再調(diào)用重載的delete函數(shù)。

(2)全局重載new和delete

可以在任何類說明之外重在new和delete携取,使它們成為全局的攒钳。當(dāng)new和delete被重載為全局時,C++原來的new與delete被忽略歹茶,并且重載的運(yùn)算符用于所有類型(包括標(biāo)準(zhǔn)型和用戶定義類型)的分配要求夕玩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市惊豺,隨后出現(xiàn)的幾起案子燎孟,更是在濱河造成了極大的恐慌,老刑警劉巖尸昧,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來幢妄,“玉大人兔仰,你說我怎么就攤上這事〗对В” “怎么了乎赴?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長潮尝。 經(jīng)常有香客問我榕吼,道長,這世上最難降的妖魔是什么勉失? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任羹蚣,我火速辦了婚禮,結(jié)果婚禮上乱凿,老公的妹妹穿的比我還像新娘顽素。我一直安慰自己咽弦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布胁出。 她就那樣靜靜地躺著离唬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪划鸽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天戚哎,我揣著相機(jī)與錄音裸诽,去河邊找鬼。 笑死型凳,一個胖子當(dāng)著我的面吹牛丈冬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甘畅,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼埂蕊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了疏唾?” 一聲冷哼從身側(cè)響起蓄氧,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎槐脏,沒想到半個月后喉童,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顿天,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年堂氯,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牌废。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡咽白,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鸟缕,到底是詐尸還是另有隱情晶框,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布叁扫,位于F島的核電站三妈,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏莫绣。R本人自食惡果不足惜畴蒲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望对室。 院中可真熱鬧模燥,春花似錦咖祭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辽旋,卻和暖如春浩嫌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背补胚。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工码耐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人溶其。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓骚腥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瓶逃。 傳聞我的和親對象是個殘疾皇子束铭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

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