delete析构的调用
来源:互联网 发布:2016网络作家排名 编辑:程序博客网 时间:2024/04/30 09:22
如果基类的析构函数不是虚函数,那么在new出来对象,最后delete回收的时候调用析构函数的原则:
析构函数看指针是什么类型的,就调用那个类的析构函数,然后按继承的顺序,依次来调用父类的析构;
主要看delete 后面跟的指针是什么类型的!!!!
#include <iostream>using namespace std;class A{public:int num;A(){num=100;cout<<"A"<<endl;}~A(){cout<<"~A"<<endl;}};class B:public A{public: int number;B(){number=222;cout<<"B"<<endl;}~B(){cout<<"~B"<<endl;}};class C{public: C(){cout<<"C"<<endl;}~C(){cout<<"~C"<<endl;}};class D:public C{public: D(){cout<<"D"<<endl;}~D(){cout<<"~D"<<endl;}};int main(){B *b=new B;delete b; //AB ~B~AA *a=new B;delete a; //AB~Aint *p=NULL;A *a1=new B;p= &(((B*)a1)->number);delete ( D*)a1;cout<<*p<<endl; //是乱码,证明a1的空间,确实删除了!!//若a1是(D*)类型的,和new B没有半点儿关系,但是因为delete的a1是(D*)//类型的,所以其调用析构函数的顺序为:AB~D~C,但是B 的空间删除了;//这里我们可以输出B类中的number的值已经验证了; system("pause");return 0;}
4 0
- delete析构的调用
- new、delete对调用 析构函数 的影响
- 内存泄漏-Delete不调用析构函数的两种情况
- 析构函数里对指针成员调用delete
- delete了,析构函数却没有调用
- C++ 析构函数以及 delete 和delete[]的整理
- delete 指针之后 ,只是释放了指针指向的内存空间,指针不会自动置为NULL,还有delete 遇到指针为NULL时不会调用析构函数
- delete 指针之后 ,只是释放了指针指向的内存空间,指针不会自动置为NULL,还有delete 遇到指针为NULL时不会调用析构函数
- 成员函数调用delete this的问题
- delete 和 析构函数的关系
- 析构函数与delete的思考
- Effective C++条款6:析构函数里对指针成员调用delete
- 条款6:析构函数里对指针成员调用delete
- 重载new和delete后调用构造函数和析构函数顺序
- 重载new和delete后调用构造函数和析构函数顺序
- effective C++笔记之条款6:析构函数里对指针成员调用delete
- Effective C++:条款6:析构函数里对指针成员调用delete
- 条款6:析构函数里对指针成员调用delete
- ACM解题总结——HihoCoder1138
- Human-level control through deep reinforcement learning(中文翻译)
- 【POJ 3277】 City Horizon(离散化+树状数组+二分)
- ZOJ 3862 Intersection【贪心】【几何】【模拟】
- 第七周项目3多文件组织程序
- delete析构的调用
- 4.11搭建网站的两个小问题
- iOS中RunLoop机制的探索
- CSU-1715 Positive Con Sequences(模拟分四种情况 )From湖南省多校对抗赛E题(2016.03.27)
- HDU 4109 Instrction Arrangement
- overfeat 测试
- JavaScript中数组和字符串的方法以及互相转换
- Warning C4819
- C++作业3