C++多态性中基类析构函数声明为虚函数
2024-08-24 22:51:50
在用基类指针指向派生类时,
在基类析构函数声明为virtual的时候,delete基类指针,会先调用派生类的析构函数,再调用基类的析构函数。
在基类析构函数没有声明为virtual的时候,delete基类指针,只会调用基类的析构函数,而不会调用派生类的析构函数,这样会造成销毁对象的不完全。
class A
{
public:
~A() { cout<<”A destruct”<
}; class AA : public A
{
public:
~AA() { cout<<”AA destruct”<
}; int _tmain(int argc, _TCHAR* argv[])
{
A * a = new AA;
delete a;
}
运行的结果是:
A destruct
如果将class A的析构函数改为: virtual ~A()
运行的结果为:
AA destruct
A destruct
可见,把基类的析构函数定义为虚函数可以避免不必要的内存泄漏。
最新文章
- 011商城项目:图片服务器的安装---nginx
- 实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑
- Pointcut is not well-formed: expecting &#39;name pattern&#39; at character position
- [ActionScript 3.0] AS3调用百度天气预报查询API
- 复选框输入Android Studio 如果修改LogCat的颜色,默认全是黑色看着挺不舒服的
- hdu 2837 Calculation
- 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
- phpcms源码跟踪(1)
- CC版本添加 LUCI
- Phplot--一些记录
- STM32外部中断线编程
- redis测试实践
- 内网环境上部署k8s+docker集群:集群ftp的yum源配置
- P3803 【模板】多项式乘法(FFT)
- Spring面试问答
- CF2A Winner
- 教你一招:修复win7 系统自带的截图工具损坏
- vim操作表
- DataStage 的优化原则
- solr4.7配置(ik-analyzer)
热门文章
- Python修改文件名
- 给FPGA初学者的建议——不要浮躁(转)
- JS 函数中返回另一个函数
- QTabWidget and QTabBar.的文字的颜色设置,三种方法
- C# 文件/文件夹压缩
- UVA_Rotation Game<;旋转游戏>; UVA 1343
- CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用
- SQL Server 2000 函数使用---CAST 和 CONVERT
- Effective C++:条款35:考虑virtual函数以外的其它选择
- PC和ARM平台编译Qt的命令