构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。
构造函数不能声明为虚函数的原因是:
1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。
2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间,虚函数表还没有被初始化,将无法进行。

为什么构造函数不能声明为虚函数?相关推荐

  1. 为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数?

    为什么构造函数不能声明为虚函数,析构函数可以,构造函数中为什么不能调用虚函数 构造函数中为什么不能调用虚函数? 第一个理由是概念上的 第二个理由是机械上的. 构造函数不能声明为虚函数的原因是 1 构造 ...

  2. 构造函数不可以声明为虚函数,析构函数可以声明为虚函数

    构造函数不能声明为虚函数,而析构函数可以声明为虚函数,在有的情景下析构函数必须声明为虚函数.  不建议在构造函数和析构函数里调用虚函数. 构造函数不能声明为虚函数的原因? 构造一个对象时,必须知道对象 ...

  3. 构造函数和析构函数能否声明为虚函数?

    构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数. 不建议在构造函数和析构函数里面调用虚函数. 构造函数不能声明为虚函数的原因是: 解释一:所谓虚函数就是多态情况下只执行 ...

  4. 为什么析构函数可以能声明为虚函数,构造函数不可以

    转自:http://blog.csdn.NET/chen825919148/article/details/8020550 构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函 ...

  5. 构造函数不可以是虚函数;析构函数可以是虚函数,也可以是纯虚函数。

    构造函数不可以是虚函数:析构函数可以是虚函数,也可以是纯虚函数. 一:构造函数不能声明为虚函数的原因 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的. 而在构造 ...

  6. 基类的析构函数不能被继承。_为什么要把C++类中的析构函数声明为虚函数?

    如题,当一个类为基类的时候,通常其析构函数被声明为虚函数,这是为啥? class BaseCls { public: BaseCls() { printf("BaseCls()n" ...

  7. c++,不能声明为虚函数的函数

    1.顶层函数:多态的运行期行为体现在虚函数上,虚函数通过继承方式来体现出多态作用,顶层 函数不属于成员函数,是不能被继承的. 2.构造函数: (1)构造函数不能被继承,因而不能声明为virtual函数 ...

  8. C++ 哪些函数不能声明成虚函数

    在C++,有五种函数不能被声明成虚函数,分别是:非成员函数.构造函数.静态成员函数.内联成员函数.友元函数这五种,下面分别解释为什么这五种函数不能被声明成虚函数. 1. 非成员函数 非成员函数只能被重 ...

  9. C++函数中那些不可以被声明为虚函数的函数

    常见的不不能声明为虚函数的有:普通函数(非成员函数):静态成员函数:内联成员函数:构造函数:友元函数. 1.为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被o ...

  10. C++不能被声明为虚函数

    虚函数是为了实现多态,但是显然并不是所有函数都可以声明为虚函数的. 不能被声明为虚函数的函数有两类: 不能被继承的函数 不能被重写的函数 因此,这些函数都不能被声明为虚函数 普通函数 构造函数 如果构 ...

最新文章

  1. BufferedWriter
  2. RedisDesktopManager连接不上redis的解决方法
  3. 动态内表及动态ALV显示
  4. 项目管理中的组织计划
  5. javascript精要(1)-script元素
  6. ES5 getter setter
  7. 具有Spring的简单工作流引擎
  8. 前端学习(1394):多人管理项目14多人加密使用
  9. MATLAB图像处理基础
  10. Jfinal中Cron4jPlugin使用
  11. android studio connot resolve
  12. Android使用蓝牙录音和播放
  13. Java泛型方法解惑
  14. uniapp子组件路由跳转老是失败
  15. 防治颈椎病,别陷入误区
  16. 八年级上册历史知识点(第1课 鸦片战争)
  17. 《高效团队待人技巧》的读书笔记
  18. 对于AI 既有期待也要思考
  19. czl蒻蒟的OI之路10、11、12
  20. MSSQL 注入鄙见

热门文章

  1. Windows远程桌面及其相关问题
  2. 《maven实战》学习笔记2——maven安装(windows和eclipse插件)
  3. 高德地图提前上线多条重要道路预通车机制不断成熟
  4. 如何从zabbix数据库中获取每日流量最大值
  5. MySql中PreparedStatement对象与Statement对象
  6. Codebook model 视频抠像 xp sp3 + vs2005 + OpenCV 2.3.1
  7. 如何对系统日志中事件 ID 9、事件 ID 11 和事件 ID 15 错误消息进行故障排除
  8. Java Collection Framework View
  9. 使用Sphinx对MySQL数据库进行全文检索
  10. talk record