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

溫馨提示×

溫馨提示×

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

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

為什么構造函數不能是虛函數

發布時間:2020-09-11 19:45:11 來源:網絡 閱讀:775 作者:2013221 欄目:編程語言

首先,我寫了一個構造函數用virtual修飾的類A,代碼如下:

class A
{
public:
	virtual A()
	{}
};

運行結果:(我是在VS下運行的)

為什么構造函數不能是虛函數

可以看出這樣的代碼編譯時是有問題的。


為什么構造函數不能是虛函數呢?

這里你需要知道一個概念,那就是虛函數表vtbl,每一個擁有虛成員函數的類都有一個指向虛函數表的指針。對象通過虛函數表里存儲的虛函數地址來調用虛函數。

那虛函數表指針是什么時候初始化的呢?當然是構造函數。當我們通過new來創建一個對象的時候,第一步是申請需要的內存,第二步就是調用構造函數。試想,如果構造函數是虛函數,那必然需要通過vtbl來找到虛構造函數的入口地址,顯然,我們申請的內存還沒有做任何初始化,不可能有vtbl的。因此,構造函數不能是虛函數。


向AI問一下細節

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

AI

南华县| 梅河口市| 灵石县| 赞皇县| 苏尼特右旗| 许昌县| 宁明县| 大渡口区| 江口县| 临邑县| 宁陵县| 玉环县| 民和| 和田市| 曲水县| 辽阳县| 乌兰县| 婺源县| 临湘市| 双城市| 和顺县| 平湖市| 西平县| 鄂州市| 芒康县| 华蓥市| 孝昌县| 宁乡县| 祁东县| 余干县| 苏尼特右旗| 石楼县| 定边县| 崇左市| 汪清县| 石嘴山市| 天峨县| 化州市| 玉屏| 乾安县| 湖州市|