通常的心得是,只有class内至少含有一个virtual函数时,才为它声明virtual析构函数。
但是,有时候会因为大意,继承一些没有将析构函数声明为virtual的类,通常是继承一些库的类时,类似std::string等。
当不希望类实例化,希望类是一个抽象类,但是又没有纯虚函数时,就可以将析构函数声明为纯虚的。但是依旧实现该抽象类的析构函数。
记住两点:
1.如果类是带多态性(virtual函数)的基类,就像声明virtual析构函数
2.如果类不是基类,或者不具备多态性(没有virtual函数),就不该声明virtual析构函数