条款07:对多态基类声明虚析构函数

来源:互联网 发布:花生壳还有免费域名吗 编辑:程序博客网 时间:2024/06/05 16:53
  • polymorphic(带多态性质)的base classes应该声明一个虚析构函数;如果base classes 带有任何析构函数,那么就该声明一个虚析构函数
  • classes的设计目的如果不是作为base classes使用,或者不具备多态性质,就不应该声明虚析构函数

    对于多态基类,由于可能存在用基类指针指向派生类对象,并经由此基类指针delete,如果没有声明虚析构函数,就会造成只delete基类部分,而没有析构派生类部分,因此造成资源泄漏。

    而对于第二种情况,声明多余的析构函数会造成空间浪费,从深度探索C++对象模型里可以知道,如果声明虚函数,就会产生一个虚函数表,对虚函数的调用其实是根据虚函数表中对应的虚函数指针调用的,这样一个虚函数表会让对象附加一个指针大小空间。

阅读全文
0 0
原创粉丝点击