我发现几乎每个虚析构函数的代码片段都将其定义为公有成员函数,就像这样:
class Base
{
public:
virtual ~Base()
{
cout << "~Base()" << endl;
}
};
class Derived : public Base
{
public:
~Derived()
{
cout << "~Derived()" << endl;
}
};
虚析构函数必须是公开的吗?还是有一些情况下非公开虚析构函数是有意义的?
delete this
从派生类型中排除,否则通常是有道理的。 - Zdeslav Vojkovicdelete this
,如果基类是虚拟的。 - Zdeslav Vojkovic