如果我在子类中将“operator new”声明为private,我可以使用没有虚拟析构函数的类作为基类吗?
下面的代码会不会导致运行时问题:
class B {
public:
~B() { }
};
class D: public B {
private:
void* operator new(size_t);
}
最佳答案
无论您如何重写派生类中的 operator new
,您都可以使用具有非虚拟析构函数的类作为基类。
如果被销毁的实例是任何派生类型,您必须确保避免的一件事是使用带有指向基的指针的delete
,因为这会导致未定义的行为。在派生类中覆盖 operator new
不会改变这一事实。
关于c++ - 具有非虚拟析构函数的基类怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859737/