虚析构函数的作用
来源:互联网 发布:ios11软件无法连接网络 编辑:程序博客网 时间:2024/05/21 14:07
虚析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数。如果析构函数不是虚函数,而程序执行时又要通过基类的指针去销毁派生类的动态对象,那么用delete销毁对象时,只调用了基类的析构函数,未调用派生类的析构函数。这样会造成销毁对象不完全。
#include<iostream.h>
#include<stdlib.h>
class CPerson
{
public:
protected:
};
class CStudent:public CPerson
{
public:
protected:
};
CPerson::~CPerson()
{
}
CStudent::~CStudent()
{
}
void main()
{
}
输出:
~Student!
~CPerson!
CStudent对象已经完成析构
~Student!
~CPerson!
如果去掉~CPerson()前面的virtual,且将“CStudent对象已经完成析构”改为“CStudent对象未完成析构”。程序的执行结果为:
~CPerson!
CStudent对象未完成析构
~Student!
~CPerson!
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- 虚析构函数的作用
- C primer plus 读书笔记(3)
- Unity3d 从数据库中读取带有换行符的文本
- Android的图片压缩类ThumbnailUtils
- linux command Line and shell script bible(笔记九)
- redis2-nginx-module LuaRedisParser
- 虚析构函数的作用
- Android4.0中修改挂断键(ENDCALL)的默认行为
- linux command Line and shell script bible(笔记十)
- 迭代器
- MFC下网络编程
- java 栈实现
- was集群小知识点
- 新人求指教
- android:屏幕自适应