JavaShuo
欄目
標籤
C++中哪些函數不能聲明爲virtual?
時間 2019-12-10
標籤
c++
哪些
函數
不能
聲明
virtual
欄目
C&C++
简体版
原文
原文鏈接
首先要明確,
virtual
是用於支持類多態的關鍵字,因此出如今類聲明以外的地方都是錯誤的。由此能夠判定下文的
1
。
前端
普通函數(即非類成員函數)不能是
virtual
的,不然不能經過編譯,
virtual
只能出如今類聲明中。
構造函數(拷貝構造函數
/
賦值構造函數)不能是
virtual
的。編譯器會爲每個含有
virtual
函數生成一個函數表(位於
rodata
段),每一個類實例的最前端會包含一個指向該表的指針。若是構造函數也能夠
virtual
,那麼須要一個虛函數指針指向對應的虛函數表,但此時對象並未構造,虛函數指針是不存在的。這就出現了矛盾。若是在基類和子類構造函數中都調用了虛函數的話,將發以下事件:調用子類構造函數,以前先調用基類的構造函數,此時只會調用基類的該函數而非子類的重載函數,由於此時子類對象並未構造徹底,虛函數指針不起做用。
靜態成員函數不能是
virtual
的,由於靜態成員函數屬於類而非單個具體對象,全部的對象共享一份代碼,沒有實現多態的必要。
inline
成員函數能夠聲明爲
virtual
,可是在編譯時不會實際將代碼直接在調用處展開。
友元函數也不能聲明爲
virtual
,由於友元關係是不能被繼承的,編譯會出錯。
相關文章
1.
C++中哪些函數不能聲明爲inline?
2.
effective c++(07)之爲多態基類聲明virtual析構函數
3.
C++筆記 爲多態基類聲明virtual函數
4.
c++基類析構函數要聲明爲virtual的緣由
5.
[Effective C++系列]-爲多態基類聲明Virtual析構函數
6.
爲何構造函數不能聲明爲虛函數?
7.
C++哪些函數不能是虛函數
8.
Effective c++(第三版) 條款7:爲多態基類聲明virtual析構函數
9.
C++函數原型(函數聲明)
10.
FUNCS.H中的函數聲明
更多相關文章...
•
NoSQL數據庫有哪些?
-
NoSQL教程
•
數據庫涉及到哪些技術?
-
MySQL教程
•
SpringBoot中properties文件不能自動提示解決方法
•
IntelliJ IDEA中SpringBoot properties文件不能自動提示問題解決
相關標籤/搜索
哪些
virtual
哪能
聲明
中聲
函數
爲能
能爲
代數函數
指數函數
C&C++
C#教程
PHP 7 新特性
Redis教程
C#
註冊中心
數據傳輸
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
子類對象實例化全過程
2.
【Unity2DMobileGame_PirateBomb09】—— 設置基本敵人
3.
SSIS安裝以及安裝好找不到商業智能各種坑
4.
關於 win10 安裝好的字體爲什麼不能用 WebStrom找不到自己的字體 IDE找不到自己字體 vs找不到自己字體 等問題
5.
2019版本mac電腦pr安裝教程
6.
使用JacpFX和JavaFX2構建富客戶端
7.
MySQL用戶管理
8.
Unity區域光(Area Light) 看不見光線
9.
Java對象定位
10.
2019-9-2-用自動機的思想說明光速
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
C++中哪些函數不能聲明爲inline?
2.
effective c++(07)之爲多態基類聲明virtual析構函數
3.
C++筆記 爲多態基類聲明virtual函數
4.
c++基類析構函數要聲明爲virtual的緣由
5.
[Effective C++系列]-爲多態基類聲明Virtual析構函數
6.
爲何構造函數不能聲明爲虛函數?
7.
C++哪些函數不能是虛函數
8.
Effective c++(第三版) 條款7:爲多態基類聲明virtual析構函數
9.
C++函數原型(函數聲明)
10.
FUNCS.H中的函數聲明
>>更多相關文章<<