目的:

//只执行了 父类的析构函数
//向通过父类指针 把 所有的子类对象的析构函数 都执行一遍
//向通过父类指针 释放所有的子类资源

方法:在父类的析构函数前+virtual关键字

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; //虚析构函数
class A
{
public:
A()
{
p = new char[];
strcpy(p, "obja");
printf("A()\n");
}
virtual ~A()
{
delete [] p;
printf("~A()\n");
}
protected:
private:
char *p;
}; class B : public A
{
public:
B()
{
p = new char[];
strcpy(p, "objb");
printf("B()\n");
}
~B()
{
delete [] p;
printf("~B()\n");
}
protected:
private:
char *p;
}; class C : public B
{
public:
C()
{
p = new char[];
strcpy(p, "objc");
printf("C()\n");
}
~C()
{
delete [] p;
printf("~C()\n");
}
protected:
private:
char *p;
}; void howtodelete(A *base)
{
delete base; //这句话不会表现成多态 这种属性
} void main()
{
C *myC = new C; //new delete匹配
//
delete myC; //直接通过子类对象释放资源 不需要写virtual (即不使用虚析构) //howtodelete(myC); //使用父类对象释放资源,使用虚析构 cout<<"hello..."<<endl;
system("pause");
return ;
}

最新文章

  1. 洛谷P1134 阶乘问题[数论]
  2. Android笔记——Android框架
  3. Leetcode House Robber II
  4. RegexBuddy正则表达式工具
  5. vs无法打开项目的解决方案
  6. 程序调试手段之gdb, vxworks shell
  7. CSS居中的实现用法实例
  8. Mysql 复习
  9. pl sql练习(3)
  10. Tengine笔记3:Nginx的反向代理和健康状态检查
  11. html 父容器和子容器通信
  12. Xtrabackup全量备份与恢复mysql数据库
  13. 怎么查看window7的.net framework的版本
  14. Linux下采用VI编辑器删除复制或移动多行文本内容
  15. Matlab以MEX方式调用C源代码
  16. C语言多线程的一个简单例子
  17. http服务器搭建之apache与nginx的特性
  18. 20165308『网络对抗技术』Exp5 MSF基础应用
  19. mysql查看及设置最大连接数
  20. django xadmin查找当前用户所在组

热门文章

  1. 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台
  2. Linux 中 sqlite3 基本操作
  3. 使用JMeter进行http压力测试
  4. 用jQuery实现鼠标移动切换图片动画
  5. Delphi Xml
  6. NX二次开发-UFUN单选菜单对话框uc1603
  7. hive简述
  8. WebStorm+Node.js开发环境的配置
  9. XDTIC2019招新笔试题 + 官方解答
  10. KNN与决策树