小編給大家分享一下C++中虛擬函數的內存分配機制是什么,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
目前成都創(chuàng)新互聯公司已為上千余家的企業(yè)提供了網站建設、域名、網絡空間、綿陽服務器托管、企業(yè)網站設計、天等網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發(fā)展。因為虛擬函數的地址翻譯取決于對象的內存地址,而不取決于數據類型(編譯器對函數
調用的合法性檢查取決于數據類型)。原來,如果類中定義了虛擬函數,該類及其派生類
就要生成一張?zhí)摵瘮当?,即vtable。而在類的對象地址空間中存儲一個該虛函數表的入口,
占4個字節(jié),這個入口地址是在構造對象是由編譯器寫入的。
有如下C++程序:
//#include<stdio.h> #include<iostream> using namespace std; class CMem { public: CMem(){} public: int m_first; private: unsigned char m_second; public : void fun1(); virtual int funOver(){return 1;} }; class CMemSub : public CMem { public: CMemSub(){} public: int m_three; private: int m_four; public: void fun3(); virtual int funOver(){return 2;} virtual int fun4(){return 3;} }; int main() { CMem a,*pMem; CMemSub b; pMem = &a; printf("%d/n",pMem->funOver()); pMem = &b; printf("%d/n",pMem->funOver()); return 0; }
文章標題:C++中虛擬函數的內存分配機制是什么-創(chuàng)新互聯
轉載來源:http://jinyejixie.com/article8/csdcip.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站制作、定制網站、搜索引擎優(yōu)化、App開發(fā)、移動網站建設、全網營銷推廣
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯