中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++晚捆綁的實現機制

發布時間:2020-07-25 18:09:02 來源:網絡 閱讀:772 作者:fun8888888 欄目:編程語言

 早綁定(early binding)是指在實例化對象之前定義它的屬性和方法,這樣編譯器或解釋程序就能夠提前轉換機器代碼。

      晚綁定(late binding)指的是編譯器或解釋程序在運行前,不知道對象的類型。使用晚綁定,無需檢查對象的類型,只需檢查對象是否支持屬性和方法即可。

   早綁定的優點是:
          (1)  編譯效率 高
          (2)  有代碼提示
          (3)  編譯時類型檢查 
   晚綁定的優點是:
          (1)  不用申明類型 
          (2)  對象類型可以隨時更改


        virtual關鍵字可以告訴編譯器實行的是晚捆綁(虛函數)。

       為了實現晚捆綁,典型的編譯器對每個包含虛函數的類將創建一個表(VTABLE),在VTABLE中放著特定類的虛函數地址。在每個帶有虛函數的類中,編譯器會放置一個指針VPTR,指向這個對象的VTABLE。當通過基類指針做虛函數調用時,編譯器靜態的插入能取得這個VPTR并在VTAVLE表中查找函數地址的代碼,這樣就會引起晚捆綁的發生。


#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class NoVirtual
{
public:
void fun()
{}
int ret()
{}
private:
int a;
};
class OneVirtual
{
public:
virtual void fun()
{}
int ret()
{}
private:
int a;
};
class TwoVirtual
{
public:
virtual void fun()
{}
virtual int ret()
{}
private:
int a;
};
void test()
{
cout << "sizeof(int):" << sizeof(int) << endl;
cout << "sizeof(NoVirtual):" << sizeof(NoVirtual) << endl;
cout << "sizeof(OneVirtual):" << sizeof(OneVirtual) << endl;
cout << "sizeof(TwoVirtual):" << sizeof(TwoVirtual) << endl;
}
int main()
{
test();
system("pause");
return 0;
}

c++晚捆綁的實現機制

由于類Onevirtual和類Twovirtual的大小沒有發生改變,所以可以推出上述的結論。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大连市| 鹤峰县| 屏山县| 赣州市| 秦安县| 麟游县| 临夏县| 渝中区| 比如县| 苍山县| 长汀县| 武清区| 泸定县| 陆丰市| 河北区| 从化市| 石景山区| 佛学| 弋阳县| 左贡县| 芒康县| 衡水市| 铜山县| 荥经县| 巴楚县| 浪卡子县| 长垣县| 平武县| 田阳县| 平顶山市| 巩义市| 吉林省| 齐齐哈尔市| 永修县| 平山县| 定西市| 炉霍县| 厦门市| 泗阳县| 满洲里市| 仁怀市|