動態綁定機制

來源:互聯網
上載者:User

1:

首先編譯器對每個包含虛函數的類建立一個表(稱為VTABLE),在VTABLE中,編譯器放置特定類的虛函數的地址。在每個帶有虛函數的類中,編譯器秘密地放置一個指標,稱為vpointer,指向這個對象的VTABLE,當通過基類指標做虛函數調用時,(也就是做多態調用時),編譯器靜態地插入能取得這個VPTR並在VTABLE表中尋找函數地址的代碼,這樣就能調用正確的函數並引起動態綁定的發生;

 

2:

如果一個類中有一個以上的虛函數,編譯器只在這個結構中插入一個單個指標;因此當兩個相同的類,帶虛函數的類比不帶虛函數的類要多四個位元組(即指標的大小);

 

3:

每當建立一個包含有虛函數的類或從包含有虛函數的類派生一個類時,編譯器就為每個類建立一個唯一的VTABLE,編譯器放置了在這個類中或在它的基類中所有已聲明為virtual的函數的地址。如果在這個衍生類別中沒有對在基類中聲明為virtual的函數進行重新定義,編譯器就使用基類的這個虛函數地址。然後編譯器在這個類中放置VPTR,當使用簡單繼承時,對於每個對象只有一個VPTR。VPTR必須被初始化為指向相應的VTABLE的起始地址。

(這個在建構函式中發生)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.