Boolan面向?qū)ο笙碌诙芄P記

一、虛指針(vptr) ? ? ? ? ? 虛表(vtbl)


vptr:

若類對(duì)象中含有虛函數(shù),則在對(duì)象模型中會(huì)存在一根虛函數(shù)指針

vtbl:虛函數(shù)指針指向一塊內(nèi)存,稱為虛表??梢詫⑺斫鉃橐环N表格,每個(gè)表格的位置存放一個(gè)虛函數(shù)對(duì)應(yīng)內(nèi)存的地址;

二、關(guān)于this

通過this指針調(diào)用虛函數(shù)指針指向虛表中實(shí)際對(duì)應(yīng)的虛函數(shù)。

舉例理解:class類比作房子,this就好比一把鑰匙,通過鑰匙來打開了這座房子的門,那么里面的東西就隨意你取用了。

his作用域是在類內(nèi)部,當(dāng)在類的非靜態(tài)成員函數(shù)中訪問類的非靜態(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)類成員的new和delete

?如果沒有定義成員new/delete,則調(diào)用全局的new/delete

如果定義了成員new/delete的類,可以使用::前綴強(qiáng)制調(diào)用全局new/delete

六、總結(jié)

這節(jié)課講了較多概念性的東西,在整個(gè)c++學(xué)習(xí)中都有用,需要經(jīng)常鞏固。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容