析构函数是虚函数时
来源:互联网 发布:数据库概论答案 编辑:程序博客网 时间:2024/06/01 07:57
#include <iostream>#include <cstring>using namespace std;class A{public:A(){ p(); }virtual void p(){ cout << "a" << endl; } ~A(){ p(); }};class B :public A{public:B(){ p(); }void p(){ cout << "B" << endl; }~B(){ p(); }};int main(int, char**){A* a = new B();delete a;// a B a 此时派生类没有被释放cout << "********" << endl;B *b = new B();delete b;// a B B a 当释放派生类时,先释放基类,后释放派生类。return 0;}
给A类中析构函数是虚函数时
#include <iostream>#include <cstring>using namespace std;class A{public:A(){ p(); }virtual void p(){ cout << "a" << endl; }virtual ~A(){ p(); }};class B :public A{public:B(){ p(); }void p(){ cout << "B" << endl; }~B(){ p(); }};int main(int, char**){A* a = new B();delete a; // a B B a cout << "********" << endl;B *b = new B();delete b;return 0;}
#include <iostream>#include <cstring>using namespace std;class A{public:A(){ p(); }virtual void p(){ cout << "a" << endl; }virtual ~A(){ p(); }};class B :public A{public:B(){ p(); }void p(){ cout << "B" << endl; }~B(){ p(); }};int main(int, char**){cout << "********" << endl;A c; //acout << "********" << endl;B d; // a Bcout << "********" << endl;A* a = new B(); //a Bdelete a; //B acout << "********" << endl;B *b = new B(); //a Bdelete b; //B areturn 0; // B a(先释放d对象的析构) a(再释放c对象的析构)}// 其中 对象c、d是在return 0时释放的。
阅读全文
0 0
- 析构函数是虚函数时
- 析构函数是虚函数
- 析构函数为啥是虚函数
- 为什么析构函数是虚函数
- 析构函数为什么是虚函数
- 为什么析构函数是虚函数
- 关于虚函数--析构函数是虚函数
- 构造函数,析构函数可不可以是虚函数?
- 构造函数和析构函数能否是虚函数
- 析构函数是虚函数的优点(转)
- 基类的析构函数为什么是虚函数?
- 基类的析构函数为什么是虚函数
- 为什么析构函数最好是虚函数?
- 为什么基类的析构函数是虚函数
- 析构函数是虚函数的优点是什么
- 为什么基类的析构函数是虚函数?
- 为什么基类的析构函数是虚函数?
- 析构函数为什么一般是虚函数
- 算法练习(4)—— 贪心算法
- Arduino通过串口透传ESP 13板与java程序交互
- 第一篇博客记录心情
- 寻找最大连续子串和
- 关于8皇后的分布式运算
- 析构函数是虚函数时
- Oracle数据库系统结构
- linux(deepin)使用virtualbox安装win10,遇到的问题
- Linux系统结构及相关操作
- maven 配置jetty-maven-plugin contextPath元素内容要用'/'开头
- python进程、线程、协程
- My fist CSDN blog
- Notepad++远程连接ssh修改linux中配置文件
- meta标签详解