如果我有一个带有虚析构函数的基类,那么派生类是否需要声明虚析构函数?
class base {
public:
virtual ~base () {}
};
class derived : base {
public:
virtual ~derived () {} // 1)
~derived () {} // 2)
};
具体问题:
- 第1)和第2)是否相同?第2)是否会自动变成虚函数,因为它是基类的,或者它会“停止”是虚函数?
- 如果派生析构函数没有任何作用,是否可以省略它?
- 如何声明派生析构函数最佳实践?将其声明为虚函数、非虚函数还是尽可能省略它?