一诗宣、虛指針(vptr) ? ? ? ? ? 虛表(vtbl)
vptr:
若類(lèi)對(duì)象中含有虛函數(shù)憎蛤,則在對(duì)象模型中會(huì)存在一根虛函數(shù)指針
vtbl:虛函數(shù)指針指向一塊內(nèi)存攒巍,稱(chēng)為虛表⊙虼瘢可以將它理解為一種表格泰佳,每個(gè)表格的位置存放一個(gè)虛函數(shù)對(duì)應(yīng)內(nèi)存的地址盼砍;
二、關(guān)于this
通過(guò)this指針調(diào)用虛函數(shù)指針指向虛表中實(shí)際對(duì)應(yīng)的虛函數(shù)逝她。
舉例理解:class類(lèi)比作房子浇坐,this就好比一把鑰匙,通過(guò)鑰匙來(lái)打開(kāi)了這座房子的門(mén)黔宛,那么里面的東西就隨意你取用了近刘。
his作用域是在類(lèi)內(nèi)部,當(dāng)在類(lèi)的非靜態(tài)成員函數(shù)中訪問(wèn)類(lèi)的非靜態(tài)成員的時(shí)候宁昭,編譯器會(huì)自動(dòng)將對(duì)象本身的地址作為一個(gè)隱含參數(shù)傳遞給函數(shù)跌宛。
三酗宋、動(dòng)態(tài)綁定
需要滿足三個(gè)條件:
1.使用指針調(diào)用
2.存在向上轉(zhuǎn)型
3.調(diào)用的是虛函數(shù)
四积仗、const
表示此函數(shù)保證不更改data members。
由上圖可以看到:
常量(const)對(duì)象可以調(diào)用const成員函數(shù)
const對(duì)象不可以調(diào)用non-const成員函數(shù)
非常量(non-const)對(duì)象可以調(diào)用const成員函數(shù)
non-const對(duì)象可以調(diào)用non-const成員函數(shù)
五蜕猫、關(guān)于new 和 delete
1)全局的new/delete:
::operator new(),?
::operator delete(),?
如果重載全局的new和delete寂曹,將影響整個(gè)項(xiàng)目
2)類(lèi)成員的new和delete
?如果沒(méi)有定義成員new/delete,則調(diào)用全局的new/delete
如果定義了成員new/delete的類(lèi)回右,可以使用::前綴強(qiáng)制調(diào)用全局new/delete
六隆圆、總結(jié)
這節(jié)課講了較多概念性的東西,在整個(gè)c++學(xué)習(xí)中都有用翔烁,需要經(jīng)常鞏固渺氧。