//虚析构函数的重要性
#include<iostream>
using namespace std;
/*
虚析构函数
主要用在多态中,用来释放子类对象内存空间,如果不使用虚析构函数,
那么在多态的场景下,使用delete关键字只能执行父类析构函数 子类对象中没有父类对象 父类中有虚函数,子类中重写了该虚函数,那么默认子类中重写的函数也是虚函数,子类中不写virtual关键字也可以
但是为了代码的可读性,还是在子类中也加上virtual 关键字
*/ class Point{
public:
Point(int b=){
this->b = b;
}
virtual ~Point(){
cout << "我是父类的析构函数!" << endl;
}
private:
int b;
}; class PointA :public Point{
public:
virtual ~PointA(){
cout << "我是子类的析构函数!" << endl;
}
}; void ProtectA(Point *pin){
//释放内存空间
delete pin;
//通过运行结果发现,如果不使用虚析构函数,那么传递过来的是子类对象
//c++编译器也只会执行父类的析构函数 不会执行子类的析构函数
} void ProtectB(){
//在堆上分配内存空间
PointA *pa = new PointA();
ProtectA(pa);
} void main(){
ProtectB();
system("pause");
}

最新文章

  1. [Asp.net 5] Options-配置文件之后的配置
  2. Loom工具类:Unity3D巧妙处理多线程
  3. oracle.jbo.JboException: JBO-29000: JBO-29000: Bad version number in .class file
  4. CodeForces 56E-Domino Principle
  5. python 2.5源代码编绎
  6. CSS3滤镜!!!
  7. shell awk统计重复个数
  8. Windows7安装 docker-compose的过程
  9. Shell命令-文件及内容处理之diff、vimdiff
  10. Windows Internals 笔记——内核对象
  11. CDN原理介绍(转)
  12. ES6学习笔记三
  13. Autofac创建实例的方法总结
  14. iphone6/6+ 适配心得
  15. MySQL从删库到跑路(六)——SQL插入、更新、删除操作
  16. Reaction 开源可自定义实时的电商平台
  17. 二:maven构建module
  18. CF 724 G. Xor-matic Number of the Graph
  19. TQ2440 LCD试验失败经验教训
  20. 39. Combination Sum(回溯)

热门文章

  1. js 数组分解 解构
  2. Jenkins高速上手
  3. XAudio2学习之混音
  4. H5 Canvas | 基本操作
  5. Hibernate 多对一关联查询
  6. CentOS 安装jdk1.7 32位
  7. JavaScript入门:002—JS代码放置的位置
  8. Spring+Hibernate整合
  9. unity3d动态操作组件
  10. 浅谈CSRF攻击方式(转)