Say we have the following two classes, A is the base class with virtual destructor and B is the derived class whose destructor doesn’t have ‘virtual’ qualifier. My question is, if I going to derive more classes from B, will B’s destructor automatically inherit the virtualness or I need to explicitly put ‘virtual’ before ‘~B() {…}’
class A
{
public:
A() { std::cout << "create A" << std::endl;};
virtual ~A() { std::cout << "destroy A" << std::endl;};
};
class B: A
{
public:
B() { std::cout << "create B" << std::endl;};
~B() { std::cout << "destroy B" << std::endl;};
};
From C++ standard (section 10.3):
So yes.