1、构造函数不能声明为虚函数

1)因为创建一个对象时需要确定对象的类型,而虚函数是在运行时确定其类型的。而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型,是类本身还是类的派生类等等

2)虚函数的调用需要虚函数表指针,而该指针存放在对象的内存空间中;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址用来调用虚函数即构造函数了

2、析构函数最好声明为虚函数

首先析构函数可以为虚函数,当析构一个指向派生类的基类指针时,最好将基类的析构函数声明为虚函数,否则可以存在内存泄露的问题。

如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除指向派生类的基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全。

构造函数为什么一般不定义为虚函数?而析构函数一般写成虚函数的原因 ?相关推荐

  1. 析构函数为什么写成虚函数?

    由于类的多态性,基类指针可以指向派生类的对象.如果删除该基类的指针,就会调用该指针指向的派生类的析构函数,而派生类的析构函数又会自动调用基类的析构函数,这样整个派生类的对象被完全释放.· 如果析构函数 ...

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

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

  3. 为什么基类的析构函数要声明成虚函数

    记得以后基类(父类) 的析构函数最好是声明为 虚函数 即:virtual 开发中遇到了一个比较傻逼的bug,也证明了理论与实际之间的差距. 在基类中没有声明其析构函数为虚函数,导致delete 释放操 ...

  4. 【C++】浅析析构函数(基类中)为什么要写成虚基类?

    为什么有了虚析构函数,就能先调用子类的析构函数? class A {virtual ~A(){} };class B : A {virtual ~B(){} };A *p = new B(); del ...

  5. 如何在MATLAB中调用(运行)“用Python写成的函数或脚本”

    如何在MATLAB中调用"用Python写成的函数或脚本",首先要确保MATLAB知道咱们的Python解释器的位置在哪里. 如果安装了Python的时候把Python加入了系统环 ...

  6. excel函数应用:如何写出IF函数多级嵌套公式

    说到函数就不得不提起函数中最受欢迎的三大家族:求和家族.查找引用家族.逻辑家族!!!没错!今天我们要介绍的就是三大家族之一逻辑函数家族的领头人:IF函数--很多人难以理解IF函数的多级嵌套使用.其实, ...

  7. 51单片机STC89C52控制LED闪烁(将延时程序写成子函数有形参)

    /*-----------------------包含头文件区域-------------------------*/ #include<reg52.h> //单片机头文件 /*----- ...

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

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

  9. 虚函数、纯虚函数、虚函数与析构函数

    一.虚函数 只有用virtual声明类的成员函数,使之成为虚函数,不能将类外的普通函数声明为虚函数.因为虚函数的作用是允许在派生类中对基类的虚函数重新定义.所以虚函数只能用于类的继承层次结构中. 一个 ...

最新文章

  1. ext3grep practice record
  2. 学学这个垃圾×××网站怎么埋头赚大钱的!
  3. XP 风格的可拖动列、可排序、可改变宽度的DataGrid的例子
  4. 【Linux】【服务器】 CentOS7下卸载MySQL详细过程步骤
  5. C++:迭代器(STL迭代器)iterator详解
  6. 【励志】高考失利之后,属于我的大学本科四年
  7. html制作一个简单的邮件,使用HTML编写简单的邮件模版
  8. SAP Spartacus的SkipLink功能
  9. shell常用命令总结总结
  10. vscode vue解决跨域_在vs code 中如何创建一个自己的 Vue 模板代码
  11. html钢琴谱播放器,蛐蛐五线谱播放器
  12. 给力大辞典v3.0 免费安装版【包含18部字典词典】
  13. 论文笔记——使用信息熵对复杂网络中节点进行影响力排名
  14. XMind 2022 for Mac(思维导图软件)V12.0.3中文免费版
  15. 面试官:怎么不用定时任务实现关闭订单?
  16. 【观察】跨入5G新时代,维谛技术(Vertiv)的行与思
  17. cesium three性能比较_初探希捷Exos银河18 TB盘,容量和性能双双提升
  18. 推荐读书论坛--栖息谷
  19. 各大厂面经分享:Java全栈知识+1500道大厂面试真题
  20. 如何打开tensorboard

热门文章

  1. 为站点添加迅雷下载和快车下载
  2. SAP为什么遇挫了?
  3. camera android 5.1,图库+下载-Camera Gallery Pro v5.1.1_手机乐园
  4. 考试系统,倒计时代码
  5. windows下用vs2019编译fltk 1.3.5
  6. ASPICE所有过程域介绍
  7. Seq2Seq模型中的label bias和exposure bias问题
  8. python模块glob的使用
  9. python 表达式求值_简单算术表达式求值
  10. 政务服务热线中的大数据应用 ---- 当前政务热线信息化系统大数据应用的现状