为什么构造函数不能声明为虚函数?
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。
构造函数不能声明为虚函数的原因是:
1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。
2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间,虚函数表还没有被初始化,将无法进行。
为什么构造函数不能声明为虚函数?相关推荐
- 为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?
为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数 构造函数中为什么不能调用虚函数? 第一个理由是概念上的 第二个理由是机械上的. 构造函数不能声明为虚函数的原因是 1 构造 ...
- 构造函数不可以声明为虚函数,析构函数可以声明为虚函数
构造函数不能声明为虚函数,而析构函数可以声明为虚函数,在有的情景下析构函数必须声明为虚函数. 不建议在构造函数和析构函数里调用虚函数. 构造函数不能声明为虚函数的原因? 构造一个对象时,必须知道对象 ...
- 构造函数和析构函数能否声明为虚函数?
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数. 不建议在构造函数和析构函数里面调用虚函数. 构造函数不能声明为虚函数的原因是: 解释一:所谓虚函数就是多态情况下只执行 ...
- 为什么析构函数可以能声明为虚函数,构造函数不可以
转自:http://blog.csdn.NET/chen825919148/article/details/8020550 构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函 ...
- 构造函数不可以是虚函数;析构函数可以是虚函数,也可以是纯虚函数。
构造函数不可以是虚函数:析构函数可以是虚函数,也可以是纯虚函数. 一:构造函数不能声明为虚函数的原因 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的. 而在构造 ...
- 基类的析构函数不能被继承。_为什么要把C++类中的析构函数声明为虚函数?
如题,当一个类为基类的时候,通常其析构函数被声明为虚函数,这是为啥? class BaseCls { public: BaseCls() { printf("BaseCls()n" ...
- c++,不能声明为虚函数的函数
1.顶层函数:多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层 函数不属于成员函数,是不能被继承的. 2.构造函数: (1)构造函数不能被继承,因而不能声明为virtual函数 ...
- C++ 哪些函数不能声明成虚函数
在C++,有五种函数不能被声明成虚函数,分别是:非成员函数.构造函数.静态成员函数.内联成员函数.友元函数这五种,下面分别解释为什么这五种函数不能被声明成虚函数. 1. 非成员函数 非成员函数只能被重 ...
- C++函数中那些不可以被声明为虚函数的函数
常见的不不能声明为虚函数的有:普通函数(非成员函数):静态成员函数:内联成员函数:构造函数:友元函数. 1.为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被o ...
- C++不能被声明为虚函数
虚函数是为了实现多态,但是显然并不是所有函数都可以声明为虚函数的. 不能被声明为虚函数的函数有两类: 不能被继承的函数 不能被重写的函数 因此,这些函数都不能被声明为虚函数 普通函数 构造函数 如果构 ...
最新文章
- BufferedWriter
- RedisDesktopManager连接不上redis的解决方法
- 动态内表及动态ALV显示
- 项目管理中的组织计划
- javascript精要(1)-script元素
- ES5 getter setter
- 具有Spring的简单工作流引擎
- 前端学习(1394):多人管理项目14多人加密使用
- MATLAB图像处理基础
- Jfinal中Cron4jPlugin使用
- android studio connot resolve
- Android使用蓝牙录音和播放
- Java泛型方法解惑
- uniapp子组件路由跳转老是失败
- 防治颈椎病,别陷入误区
- 八年级上册历史知识点(第1课 鸦片战争)
- 《高效团队待人技巧》的读书笔记
- 对于AI 既有期待也要思考
- czl蒻蒟的OI之路10、11、12
- MSSQL 注入鄙见
热门文章
- Windows远程桌面及其相关问题
- 《maven实战》学习笔记2——maven安装(windows和eclipse插件)
- 高德地图提前上线多条重要道路预通车机制不断成熟
- 如何从zabbix数据库中获取每日流量最大值
- MySql中PreparedStatement对象与Statement对象
- Codebook model 视频抠像 xp sp3 + vs2005 + OpenCV 2.3.1
- 如何对系统日志中事件 ID 9、事件 ID 11 和事件 ID 15 错误消息进行故障排除
- Java Collection Framework View
- 使用Sphinx对MySQL数据库进行全文检索
- talk record