C++---------之--------【虚析构函数】
/**************************************************************************************************************************
模块说明虚析构函数【情况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++---------之--------【虚析构函数】相关推荐
- C++继承中构造函数、析构函数调用顺序及虚析构函数
首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...
- unique函数_C++智能指针2:(虚?)析构函数(标准与实现的差异)
只要是有良心的 C++ 教材,总是会苦心孤诣地告诫初学者,在继承关系中,应该把父类的析构函数定义成虚函数.这已然成为一条铁律,如果违背,不仅有内存泄漏的风险,在多继承情况下甚至会出现未定义行为.因此, ...
- C++对象模型7——类的成员函数、反汇编虚析构函数、RTTI、多态的开销
一.类成员函数 class test { public:void myfunc(){}virtual void vfunc() {}static void sfunc() {} };void myfu ...
- C++编程进阶2(编译器在类内默认生成的函数讨论以及纯虚析构函数)
三.编译器默认提供的类内函数讨论 1.当写下一个空类时,编译器会在必要的时候默认提供四个函数:构造.拷贝构造.operator=和析构函数,而且都是public的 class Empty{ }; 上述 ...
- 为什么一般要定义析构函数为虚析构函数
没有使用虚析构函数可能会出现的问题: #include <iostream> #include <string> using namespace std;class A { p ...
- C++ 虚析构函数
类型需要虚析构函数的另外一个特征 是该类型具有指针成员或引用成员.如果有指针成员和引用成员,则该类型通常需要实现析构函数以及拷贝操作. 通常,一个实现了析构函数的类型同时也需要实现拷贝构造函数与拷贝复 ...
- C++继承中析构函数 构造函数的调用顺序以及虚析构函数
首先说说构造函数.大家都知道构造函数里就能够调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就能够调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数, ...
- C++中基类的析构函数为什么要用virtual虚析构函数
知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定. 关于动态绑定的讲解,请参阅: C++中的动态类型与动态绑定.虚函数.多态实现 正题 直接的讲,C++中基类采用virtual虚析构函数是 ...
- 多态基类与虚析构函数
假设我们有一个基类A,很不幸的,A的析构函数是一个non-virtual.同时我们有一个派生类B,它派生自A. 我们定义了一个A类型指针,它指向的实际对象是B: A * ptr = new B; 然后 ...
- 【c++】28.虚析构函数、纯虚函数
1.虚函数:在类的成员函数前面加virtual关键字的函数: 一般把虚函数定义在public区,方便在主函数中调用 如果一个类有一个虚函数,则该类就有一个虚函数列表,所有该类的对象都共享这个虚函数表: ...
最新文章
- VTK:图片之Interpolation
- 外设驱动库开发笔记0:EPD总体设计
- 解放双手!推荐一款阿里开源的低代码工具,YYDS!
- 从平台架构到大屏可视化,一文读懂金融服务行业的数据分析
- animation动画效果 1002 css3
- qt中setStyleSheet导致的内存泄漏
- TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
- Redis bgsave 线上分析
- jQuery——淘宝购物车结算页面demo
- HDLC协议C语言,符合中国移动标准协议转换器中HDLC协议FPGA设计与实现.doc
- 运维基础——Zabbix:Lack of free swap space on Zabbix server
- cad编辑节点快捷键是什么_CAD常用的快捷键命令
- python绘制分形图基础_Python 绘制分形图(曼德勃罗集、分形树叶、科赫曲线、分形龙、谢尔宾斯基三角等)附代码...
- 78㎡网络机房动环监控及告警方案
- openwrt web升级功能介绍
- 02 设计师灵感网址(1)
- 分页器Pagerhelper
- Springboot2.x集成PageHelper
- MATLAB读取TECPLOT笛卡尔网格三维流场数据
- 创建一个不带头结点的循环单链表并进行相关操作
热门文章
- opencv android 羽化,学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
- java rest httpclient_Httpclient与RestTemplate的比较(比httpClient更优雅的Restful URL访问)...
- SQL BASELINE修改固定执行计划
- js打印不询问直接打印_直接成型喷墨打印的五个关键注意事项
- Android 存储路径浅析
- INSTALL_FAILED_VERSION_DOWNGRADE报错
- Linux基本操作和知识
- QQ动态头像和动态主页
- 基于JAVA+SpringMVC+Mybatis+MYSQL的网络投票系统
- python date2num_坚持mdates.date2num