在effective c++ 条款7中最后总结有:polymorphic(带多态性性质的)base classes应该声明一个virtual析构函数。如果class带有任何virtual函数,他就应该拥有一个virtual析构函数。
'这句话为何正确?在我的理解中virtual析构函数主要作用是为了防止内存泄露而条款总结中拥有virtual函数就需要virtual析构函数是为什么?、
我写一下自己的理解吧,可能不对,仅供参考。有虚函数的类推荐用虚析构,但这并不是强制性的。主要说一下虚析构的目的,有虚函数一般意味着可以继续向下派生,但如果父类析构函数不是虚函数,在父类析构时不能重定位到子类析构,会导致子类析构函数不执行。所以想继续派生子类的类,一定要用虚析构函数,不想继续派生的随意。
根据实际情况。析构函数一般用来释放资源,如果子类中没有个性化的资源需要释放,就没必要用virtual修饰析构函数