如何从具有非虚拟析构函数的类派生?

时间:2017-11-27 13:12:51

标签: c++ polymorphism

我有以下问题。我想派生一个派生自Base的类,但不幸的是Base有一个非虚拟析构函数(我不允许触及Base):

class Base{
public:
~Base(); //not virtual, cannot be changed
}

class Derived : public Base{
public:
~Derived();
// more stuff
}

问题在于:

Base* tmp = new Derived();
delete tmp;

将编译,但不会调用正确的析构函数。因此我的问题是:如何防止向基类派生指针的向下转换?这个问题可能还有另一个聪明的解决方案吗?或者是从具有非虚拟析构函数的类派生出来的绝对禁止?

0 个答案:

没有答案