C++ 类的多态四(虚析构函数的重要性)
2024-08-28 09:45:58
//虚析构函数的重要性
#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");
}
最新文章
- [Asp.net 5] Options-配置文件之后的配置
- Loom工具类:Unity3D巧妙处理多线程
- oracle.jbo.JboException: JBO-29000: JBO-29000: Bad version number in .class file
- CodeForces 56E-Domino Principle
- python 2.5源代码编绎
- CSS3滤镜!!!
- shell awk统计重复个数
- Windows7安装 docker-compose的过程
- Shell命令-文件及内容处理之diff、vimdiff
- Windows Internals 笔记——内核对象
- CDN原理介绍(转)
- ES6学习笔记三
- Autofac创建实例的方法总结
- iphone6/6+ 适配心得
- MySQL从删库到跑路(六)——SQL插入、更新、删除操作
- Reaction 开源可自定义实时的电商平台
- 二:maven构建module
- CF 724 G. Xor-matic Number of the Graph
- TQ2440 LCD试验失败经验教训
- 39. Combination Sum(回溯)