溫馨提示×

溫馨提示×

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

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

虛函數的實現機制

發布時間:2020-07-08 07:50:26 來源:網絡 閱讀:453 作者:非等閑之輩 欄目:編程語言

開門見山的說,虛函數能夠動態綁定的實現是一個虛表的存在

有如下繼承關系

class A

{

public:

       virtual void fun1();

       virtual void fun2();

};

class B:public A

{

public:

       void fun1();

       void fun3();

};

每一有虛函數的類在實例化的時候會形成一個虛表,而在類內保存一個指向虛表的指針,

這個虛表指向了具體函數的實現:

如,在A類中虛表的內存布局

指針指向A類的fun 1()

指針指向A類的fun2()


A類對象的內存布局

指向A類虛表的指針

A類對象的數據成員

 

B繼承的A因此B也有一個表,不同的是B中的虛表布局一樣,而指向的函數地址不同

那么當父類的指針指向子類的對象的時候,虛表指針指向的虛表會動態的指向子類的表,從而實現了虛函數的動態綁定。


向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女