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

溫馨提示×

溫馨提示×

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

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

C++多態的原因

發布時間:2020-10-21 05:20:41 來源:網絡 閱讀:384 作者:春春之春 欄目:編程語言

多態性可以簡單的概括為“1個接口,多種方法”,在程序運行的過程中才決定調用的機制C++編譯器在編譯的時候,要確定每個對象調用的函數的地址,這稱為早期綁定(early binding), 程序實現上是這樣,通過父類指針調用子類的函數,可以讓父類指針有多種形態。而要讓編譯器采用遲綁定,就要在基類中聲明函數時使用virtual關鍵字,這樣的函數我們稱為虛函數。一旦某個函數在基類中聲明為virtual,那么在所有的派生類中該函數都是virtual,而不需要再顯式地聲明為virtual。

正是由于每個對象調用的虛函數都是通過虛表指針來索引的,也就決定了虛表指針的正確初始化是非常重要的。換句話說,在虛表指針沒有正確初始化之前,我們不能夠去調用虛函數。那么虛表指針在什么時候,或者說在什么地方初始化呢?
答案是在構造函數中進行虛表的創建和虛表指針的初始化。構造函數的調用順序,在構造子類對象時,要先調用父類的構造函數,此時編譯器只“看到了”父類,并不知道后面是否后還有繼承者,它初始化父類對象的虛表指針,該虛表指針指向父類的虛表。當執行子類的構造函數時,子類對象的虛表指針被初始化,指向自身的虛表。

C++的多態性用一句話概括就是:在基類的函數前加上virtual關鍵字,在派生類中重寫該函數,運行時將會根據對象的實際類型來調用相應的函數。如果對象類型是派生類,就調用派生類的函數;如果對象類型是基類,就調用基類的函數。



 

向AI問一下細節

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

AI

芜湖县| 荔浦县| 马公市| 五河县| 勃利县| 平泉县| 昆明市| 济南市| 高淳县| 甘谷县| 逊克县| 崇信县| 常州市| 中江县| 雷波县| 南皮县| 余干县| 武定县| 固原市| 望都县| 丹阳市| 海宁市| 浙江省| 永嘉县| 菏泽市| 扶余县| 九江市| 平和县| 绥棱县| 南皮县| 竹北市| 宜君县| 襄樊市| 互助| 克东县| 阿拉善右旗| 利辛县| 临夏市| 东莞市| 平山县| 明水县|