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ò)充申請量