C++面向?qū)ο蟾呒壘幊蹋ㄏ拢?Week 2 (Boolan) by Im4lish

1-對象模型:關(guān)于vptr和vtbl
無論類中有多少個虛函數(shù),只有一個vptr,vptr指向vtbl,vtbl不占用對象空間。
vtbl可視為一個數(shù)組,vtbl中儲存著虛函數(shù)的指針。
2-對象模型:關(guān)于this
this指針是每個成員函數(shù)的隱藏參數(shù)。
3-對象模型:關(guān)于Dynamic Binding
pa->vfunc1()等價于(*(p->vptr)[n])(p)或者(* p->vptr[n])(p)
4-談?wù)刢onst
1、const member function

return_type funcname cosnt (parameters)
{
      //保證不修改成員變量
      //在某些情況下,若return_type為引用且返回的為成員變量,則可能導(dǎo)致成員變量,使得const修飾符失效
}

2、const object

const object與const member function

當(dāng)函數(shù)的const與non-const版本同時存在時,const object只會調(diào)用const版本,non-const object只會調(diào)用non-const版本
5-關(guān)于New,Delete
Xxx* x = new Xxx()中的new為表達(dá)式,其不可改變,而對new的重載,則是該表達(dá)式經(jīng)編譯器轉(zhuǎn)化為

void* mem = operator new(sizeof(Xxx));
x = static_cast<Xxx*>mem;
x->Xxx::Xxx();

中的operator new。delete與new相似。
new操作符在C++中,實(shí)際上是通過malloc函數(shù)來實(shí)現(xiàn)。delete操作符則是通過free函數(shù)實(shí)現(xiàn)。
6-重載Operator new,Operator delete
size_z是在重載new操作符時所規(guī)定的第一個參數(shù),不必傳入,是重載函數(shù)的規(guī)定。
7-示例
8-重載new[],delete[]示例
9-Basic_String使用new(extra)擴(kuò)充申請量

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

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

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