C++——虚析构
2024-09-06 07:39:53
目的:
//只执行了 父类的析构函数
//向通过父类指针 把 所有的子类对象的析构函数 都执行一遍
//向通过父类指针 释放所有的子类资源
方法:在父类的析构函数前+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 ;
}
最新文章
- 洛谷P1134 阶乘问题[数论]
- Android笔记——Android框架
- Leetcode House Robber II
- RegexBuddy正则表达式工具
- vs无法打开项目的解决方案
- 程序调试手段之gdb, vxworks shell
- CSS居中的实现用法实例
- Mysql 复习
- pl sql练习(3)
- Tengine笔记3:Nginx的反向代理和健康状态检查
- html 父容器和子容器通信
- Xtrabackup全量备份与恢复mysql数据库
- 怎么查看window7的.net framework的版本
- Linux下采用VI编辑器删除复制或移动多行文本内容
- Matlab以MEX方式调用C源代码
- C语言多线程的一个简单例子
- http服务器搭建之apache与nginx的特性
- 20165308『网络对抗技术』Exp5 MSF基础应用
- mysql查看及设置最大连接数
- django xadmin查找当前用户所在组
热门文章
- 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台
- Linux 中 sqlite3 基本操作
- 使用JMeter进行http压力测试
- 用jQuery实现鼠标移动切换图片动画
- Delphi Xml
- NX二次开发-UFUN单选菜单对话框uc1603
- hive简述
- WebStorm+Node.js开发环境的配置
- XDTIC2019招新笔试题 + 官方解答
- KNN与决策树