c++ - 具有非虚拟析构函数的基类怎么样?

标签 c++ new-operator destructor

如果我在子类中将“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/

相关文章:

c++内存分配错误?

c++ - 使用 Packed=true 原型(prototype)文件读取非打包重复字段

c++ - 子级和父级 C 程序中的 SIGSEGV 处理

c++ - C++ 中的第一个覆盖前缀 - 我的代码有什么问题?

python - 如何为已经实例化的类 python 覆盖 __repr__ 方法

C++ 从抽象基类指针复制数据?

c++ - C++中调用析构函数和构造函数的顺序是什么

.net - 在我的析构函数中释放 Excel 对象

c++ - 加载/导出随机数

c++ - 在类中使用析构函数