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.
微軟準備淘汰 SHA-1
2.
Windows Server 2019 Update 2010,20H2
3.
Jmeter+Selenium結合使用(完整篇)
4.
windows服務基礎
5.
mysql 查看線程及kill線程
6.
DevExpresss LookUpEdit詳解
7.
GitLab簡單配置SSHKey與計算機建立連接
8.
桶排序(BucketSort)
9.
桶排序(BucketSort)
10.
C++ 桶排序(BucketSort)
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
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中的函數聲明
>>更多相關文章<<