c++ - 如果在派生类中定义了虚拟析构函数,而不是层次结构的顶部怎么办? C++

标签 c++ virtual destructor hierarchy

我想知道定义一个没有虚析构函数的基类,并用虚析构函数定义继承类是否正确?如果我这样做,实际会发生什么?

最佳答案

如果您删除 p,其中 pX* 类型,但实际上指向一个 Y,它是从 X 派生,除非 X 有一个 virtual 析构函数,否则你有未定义的行为。如果 Y 的析构函数是 virtualX 的析构函数不是,它什么也不会改变。

关于c++ - 如果在派生类中定义了虚拟析构函数,而不是层次结构的顶部怎么办? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27534500/

相关文章:

c++ - 无法访问单例类析构函数中的私有(private)成员

c++ - 关于通用引用和左值引用的问题

c++ - 在 C++ 中,抽象接口(interface)可以与侵入式引用计数一起使用吗?

c++ - 什么标题包含 HR 功能定义? ( window 编程)

c++ - 抽象类和指针

c++ - 为什么虚函数会破坏我的转换?

c++ - 构造函数和重载运算符的执行顺序

c++ - 对虚重载函数感到困惑

c++ - shared_ptr 魔法 :)

c++ - 在 C++ 中有可能什么都不抛出吗?