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.
Excel教程:排序-筛选-切片-插入表格
2.
ZigBee ProfileID,DeviceID,ClusterID
3.
二维码背后不能不说的秘密Part1~
4.
基于迅为i.MX6平台 | 智能家居远程监控系统
5.
【入门篇】ESP8266直连智能音箱(天猫精灵)控制智能灯
6.
MongoDB安装问题
7.
【建议收藏】22个适合程序员多逛逛的网站
8.
【建议收藏】10个适合程序员逛的在线社区
9.
Attention-Based SeriesNet论文读后感
10.
Flutter中ListView复用原理探索
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
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中的函数声明
>>更多相关文章<<