真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

深入C++對象模型&虛函數(shù)表

多態(tài)的實現(xiàn)機制:

為臨朐等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及臨朐網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、成都做網(wǎng)站、臨朐網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

       C++中虛函數(shù)的主要作用就是用來實現(xiàn)多態(tài),就是使用基類的指針或者引用調(diào)用重寫的虛函數(shù),當父類的指針或引用指向父類對象時調(diào)用的是父類虛函數(shù),當指向子類對象時調(diào)用的是子類的虛函數(shù)。那么這又是怎么實現(xiàn)的呢???

       這都是通過虛函數(shù)表實現(xiàn)的,虛函數(shù)表是通過一塊連續(xù)內(nèi)存來存儲虛函數(shù)的地址。這張表解決了虛函數(shù)重寫(地址進行覆蓋)的問題 。在有虛函數(shù)的對象實例中都有一張?zhí)摵瘮?shù)表,虛函數(shù)表就像一張地圖,指明了實際調(diào)用的虛函數(shù)函數(shù)。

例:

class Base
{
public:
       Base()
              :_b(1){}
       virtual void fun1()
       { }
       virtual void fun2()
       { }
private:
       int _b;
};


虛函數(shù)表的最后一個元素是一個空指針。

       既然我們知道了虛函數(shù)的地址,那么就可以通過過找到這塊地址來調(diào)用這個虛函數(shù)。這也導致了多態(tài)的不安全性,效率降低。

typedef void (* pfun)();
void PrintfBase(pfun *_ppfun)
{
       int i = 0;
       for (i = 0; _ppfun[i] != NULL; i++)
       {
              _ppfun[i] ();
       }
}
void test()
{
       Base b;
       PrintfBase((pfun *)*((int *)(&b)));
}

深入C++對象模型&虛函數(shù)表


分享文章:深入C++對象模型&虛函數(shù)表
鏈接分享:http://weahome.cn/article/jchecj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部