/**************************************************************************************************************************
模块说明虚析构函数【情况1】情况一:将基类Point中的析构函数声明为不带virtual的非析构函数 即:Point(){};则运行结果为:executing Point destructor【情况2】情况二:将基类Point中的析构函数声明为虚析构函数,即:virtual ~Point(){}则运行结果为:executing Circle destructorexecuting Point destructor
***************************************************************************************************************************/
#include<iostream>
using namespace std;class Point{
public:Point(){};~Point()                   //情况一:将基类中的析构函数声明为非虚析构函数{cout<<"executing Point destructor"<<endl;}
};class Circle:public Point{
public:Circle(){};~Circle(){cout<<"executing Circle destructor"<<endl;}
};int main()
{Point *p=new Circle;delete p;system("pause");return 0;}

/**************************************************************************************************************************
模块说明虚析构函数【情况1】情况一:将基类Point中的析构函数声明为不带virtual的非析构函数 即:Point(){};则运行结果为:executing Point destructor【情况2】情况二:将基类Point中的析构函数声明为虚析构函数,即:virtual ~Point(){}则运行结果为:executing Circle destructorexecuting Point destructor
***************************************************************************************************************************/
#include<iostream>
using namespace std;class Point{
public:Point(){};virtual ~Point()                   //情况二:将基类中的析构函数声明为虚析构函数{cout<<"executing Point destructor"<<endl;}
};class Circle:public Point{
public:Circle(){};~Circle(){cout<<"executing Circle destructor"<<endl;}
};int main()
{Point *p=new Circle;delete p;system("pause");return 0;}

C++---------之--------【虚析构函数】相关推荐

  1. C++继承中构造函数、析构函数调用顺序及虚析构函数

    首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...

  2. unique函数_C++智能指针2:(虚?)析构函数(标准与实现的差异)

    只要是有良心的 C++ 教材,总是会苦心孤诣地告诫初学者,在继承关系中,应该把父类的析构函数定义成虚函数.这已然成为一条铁律,如果违背,不仅有内存泄漏的风险,在多继承情况下甚至会出现未定义行为.因此, ...

  3. C++对象模型7——类的成员函数、反汇编虚析构函数、RTTI、多态的开销

    一.类成员函数 class test { public:void myfunc(){}virtual void vfunc() {}static void sfunc() {} };void myfu ...

  4. C++编程进阶2(编译器在类内默认生成的函数讨论以及纯虚析构函数)

    三.编译器默认提供的类内函数讨论 1.当写下一个空类时,编译器会在必要的时候默认提供四个函数:构造.拷贝构造.operator=和析构函数,而且都是public的 class Empty{ }; 上述 ...

  5. 为什么一般要定义析构函数为虚析构函数

    没有使用虚析构函数可能会出现的问题: #include <iostream> #include <string> using namespace std;class A { p ...

  6. C++ 虚析构函数

    类型需要虚析构函数的另外一个特征 是该类型具有指针成员或引用成员.如果有指针成员和引用成员,则该类型通常需要实现析构函数以及拷贝操作. 通常,一个实现了析构函数的类型同时也需要实现拷贝构造函数与拷贝复 ...

  7. C++继承中析构函数 构造函数的调用顺序以及虚析构函数

    首先说说构造函数.大家都知道构造函数里就能够调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就能够调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...

  8. C++中基类的析构函数为什么要用virtual虚析构函数

    知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定. 关于动态绑定的讲解,请参阅:  C++中的动态类型与动态绑定.虚函数.多态实现 正题 直接的讲,C++中基类采用virtual虚析构函数是 ...

  9. 多态基类与虚析构函数

    假设我们有一个基类A,很不幸的,A的析构函数是一个non-virtual.同时我们有一个派生类B,它派生自A. 我们定义了一个A类型指针,它指向的实际对象是B: A * ptr = new B; 然后 ...

  10. 【c++】28.虚析构函数、纯虚函数

    1.虚函数:在类的成员函数前面加virtual关键字的函数: 一般把虚函数定义在public区,方便在主函数中调用 如果一个类有一个虚函数,则该类就有一个虚函数列表,所有该类的对象都共享这个虚函数表: ...

最新文章

  1. VTK:图片之Interpolation
  2. 外设驱动库开发笔记0:EPD总体设计
  3. 解放双手!推荐一款阿里开源的低代码工具,YYDS!
  4. 从平台架构到大屏可视化,一文读懂金融服务行业的数据分析
  5. animation动画效果 1002 css3
  6. qt中setStyleSheet导致的内存泄漏
  7. TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  8. Redis bgsave 线上分析
  9. jQuery——淘宝购物车结算页面demo
  10. HDLC协议C语言,符合中国移动标准协议转换器中HDLC协议FPGA设计与实现.doc
  11. 运维基础——Zabbix:Lack of free swap space on Zabbix server
  12. cad编辑节点快捷键是什么_CAD常用的快捷键命令
  13. python绘制分形图基础_Python 绘制分形图(曼德勃罗集、分形树叶、科赫曲线、分形龙、谢尔宾斯基三角等)附代码...
  14. 78㎡网络机房动环监控及告警方案
  15. openwrt web升级功能介绍
  16. 02 设计师灵感网址(1)
  17. 分页器Pagerhelper
  18. Springboot2.x集成PageHelper
  19. MATLAB读取TECPLOT笛卡尔网格三维流场数据
  20. 创建一个不带头结点的循环单链表并进行相关操作

热门文章

  1. opencv android 羽化,学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
  2. java rest httpclient_Httpclient与RestTemplate的比较(比httpClient更优雅的Restful URL访问)...
  3. SQL BASELINE修改固定执行计划
  4. js打印不询问直接打印_直接成型喷墨打印的五个关键注意事项
  5. Android 存储路径浅析
  6. INSTALL_FAILED_VERSION_DOWNGRADE报错
  7. Linux基本操作和知识
  8. QQ动态头像和动态主页
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的网络投票系统
  10. python date2num_坚持mdates.date2num