析构函数的调用顺序
来源:互联网 发布:苏州鑫玛特软件怎么样 编辑:程序博客网 时间:2024/05/06 16:54
析构函数做最后的“清场工作”,
一般当派生类对象从内存中撤销时,先调用派生类的析构函数,再调用基类析构函数;
但,若用new建立了临时对象,在用delete撤销对象是,系统会只执行基类的析构函数,而不执行派生类的析构函数。
如果将基类的析构函数声明为虚函数,由基类所有派生类的析构函数自动成为虚函数(即使析构函数名不同)。
将析构函数加上vitual,实现具体对象的 动态关联 ,在运行阶段,先调用派生类析构,在调用基类析构
例子1:#include <stdio.h>
//using namespace std;
class A
{
public:
~A();
};
A::~A()
{
printf("delete A ");
}
class B : public A
{
public:
~B();
};
B::~B()
{
printf("delete B ");
}
int main()
{
A *pa = new B();
delete pa;
}
输出结果为delete A
例子2:
#include <iostream>
using namespace std;
class A{
public:
virtual ~A()
{
cout<<"a"<<endl;
}
};
class B:public A
{
public:
virtual ~B()
{
cout<<"b"<<endl;
}
};
int main()
{
A* p=new B;
delete p;
}
结果为 b a
0 0
- 析构函数的调用顺序
- 关于析构函数的调用顺序
- 浅谈析构函数的调用顺序
- 析构函数的调用顺序
- 析构函数调用顺序
- 析构函数调用顺序
- 析构函数调用顺序
- 浅谈构造函数与析构函数的调用顺序
- 浅谈构造函数与析构函数的调用顺序
- 构造函数与析构函数的调用时间顺序
- 关于构造函数和析构函数的调用顺序
- C++构造函数和析构函数的调用顺序
- 浅谈构造函数与析构函数的调用顺序
- C++构造函数和析构函数的调用顺序
- 浅谈构造函数与析构函数的调用顺序
- 浅谈构造函数与析构函数的调用顺序
- 类的构造函数与析构函数调用顺序
- C++调用构造函数与析构函数的顺序
- 解决dwz框架-from表单提交两次以上问题
- 【追求进步】左旋转字符串
- [STL]list的用法
- mysql优化
- 三种解决UIWebView内js和objc 交互的思路
- 析构函数的调用顺序
- Base64 原理和应用方向
- cann't connect to mysql server on localhost(0)
- Java装箱问题
- java中删除list重复元素
- Android启动另一个app
- 如何实现高效的事件管理?
- mysql处理高并发,防止库存超卖
- iOS-OC-UITextField首行缩进