当我试图以多态方式删除派生对象(即:基类具有公共虚拟析构函数)时,为什么仍在调用派生类私有析构函数?为什么私有范围解析在这里不起作用。
class Base
{
protected:
Base() { cout << "Base constructor.\n"; }
public:
virtual ~Base() { cout << "Base destructor.\n"; }
};
class Derived :public Base
{
public:
Derived() { cout << "Derived constructor.\n"; }
private:
~Derived() { cout << "Derived destructor.\n"; }
};
int main()
{
Base *p = new Derived();
delete p;
}
输出:
Base constructor.
Derived constructor.
Derived destructor.
Base destructor.