在用基类指针指向派生类时,

在基类析构函数声明为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

可见,把基类的析构函数定义为虚函数可以避免不必要的内存泄漏。

最新文章

  1. 011商城项目:图片服务器的安装---nginx
  2. 实现iOS图片等资源文件的热更新化(四): 一个最小化的补丁更新逻辑
  3. Pointcut is not well-formed: expecting &#39;name pattern&#39; at character position
  4. [ActionScript 3.0] AS3调用百度天气预报查询API
  5. 复选框输入Android Studio 如果修改LogCat的颜色,默认全是黑色看着挺不舒服的
  6. hdu 2837 Calculation
  7. 【BZOJ】1002: [FJOI2007]轮状病毒 递推+高精度
  8. phpcms源码跟踪(1)
  9. CC版本添加 LUCI
  10. Phplot--一些记录
  11. STM32外部中断线编程
  12. redis测试实践
  13. 内网环境上部署k8s+docker集群:集群ftp的yum源配置
  14. P3803 【模板】多项式乘法(FFT)
  15. Spring面试问答
  16. CF2A Winner
  17. 教你一招:修复win7 系统自带的截图工具损坏
  18. vim操作表
  19. DataStage 的优化原则
  20. solr4.7配置(ik-analyzer)

热门文章

  1. Python修改文件名
  2. 给FPGA初学者的建议——不要浮躁(转)
  3. JS 函数中返回另一个函数
  4. QTabWidget and QTabBar.的文字的颜色设置,三种方法
  5. C# 文件/文件夹压缩
  6. UVA_Rotation Game&lt;旋转游戏&gt; UVA 1343
  7. CentOS7安全设置 yum-cron系统自动更新,firewalld防火墙简单使用
  8. SQL Server 2000 函数使用---CAST 和 CONVERT
  9. Effective C++:条款35:考虑virtual函数以外的其它选择
  10. PC和ARM平台编译Qt的命令