effective c++ 条款7,8(为多态基类声明virtual析构函数,别让异常逃离析构函数)

来源:互联网 发布:手机音量调节软件 编辑:程序博客网 时间:2024/05/17 04:05

这里写图片描述
这里写图片描述
这里写图片描述
若gettimekeeper指针指向atomicclock对象,上述代码执行时,atomicclock的成员变量有可能没被销毁,而其析构函数也未被执行,但是基类已经被销毁。可能会引起资源泄漏

解决方案:给基类一个virtual析构函数
这里写图片描述
加上关键字之后,会销毁整个对象,包括派生类对象

添加virtual关键字会增加对象的体积,因为出现了虚函数表和虚函数指针,所以,当一个类不作为基类的时候,不要加virtual关键字给析构函数

析构函数的运作方式:最深层次派生的类的析构函数最先调用,然后是每一个基类的析构函数

这里写图片描述

析构函数绝对不要有异常

0 0
原创粉丝点击