91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

克拉玛依市| 囊谦县| 密山市| 冀州市| 雷州市| 迭部县| 德江县| 四会市| 桓台县| 山东| 扶绥县| 宝兴县| 颍上县| 正镶白旗| 保定市| 湘阴县| 安新县| 远安县| 那曲县| 乡宁县| 龙里县| 会宁县| 襄城县| 隆回县| 章丘市| 南城县| 海门市| 张家港市| 东台市| 沈阳市| 岢岚县| 邢台县| 寻甸| 威宁| 沁水县| 留坝县| 县级市| 章丘市| 台安县| 西昌市| 东丰县|