c 虛函式及static的記憶體分配情況

2021-07-25 04:14:32 字數 689 閱讀 2188

class gfather

void b()

void c()

}; //c++呼叫虛函式的時候,要根據例項(即this指標指向的例項)中虛函式表指標得到虛函式表,再從虛函式表中找到函式的位址。

//沒有virtual關鍵字,sizeof(father)占用1位元組,有virtual關鍵字,sizeof(father)占用4位元組,因為包含了虛函式指標

class father

virtual void b()

void c()

};class mother

virtual void j()

virtual void k()

};class son : public father, public mother //包含了他們的虛函式指標

void j()

};class sson :public father, public mother

void c()

};class ca

}; class cb

}; struct sta

}; struct stb

}; struct stc //空結構體

; int cb::c = 0;

int stb::c = 0;

int main()

c 中的虛函式及虛函式表

有關鍵字virtual修飾的成員函式,為了實現多型。1.虛函式表用來存放虛函式的位址,也稱虛表。2.乙個含有虛函式的類中至少有乙個虛表。3.虛表指標 二級指標,虛函式指標的指標,存放在物件模型頭部,32位系統中佔4個位元組,在64位系統中佔8個位元組。虛表指標中存放著虛表的首位址。可以通過物件例項化...

類成員函式,虛函式及虛函式表,記憶體布局

類的普通成員函式 非static,非virtual,非friend class a 注意,當foo函式是虛函式,或者foo函式體內要用到類的成員變數時,上述呼叫全部錯誤,因為要根據物件位址偏移來尋找虛函式表或者成員變數 貌似類的成員函式,只有static函式可以用a fun 域操作符來訪問,普通函式...

C 虛函式表指標分析,及多重繼承虛函式表的分布

c 如果想滿足動態繫結,及基類指標或引用呼叫派生類函式,需要滿足三個條件 1.基類存在虛函式 2.基類指標或引用指向派生類物件 3.派生類需要重寫基類的虛函式 此時 a p 指標會指向 b類物件 記憶體布局中的 a類的基類子物件 從而找到vptr 虛函式表指標 接著找到b類中的虛函式表,由於b類中並...