是否有任何有效且可用的情况会强制您不要在析构函数之前使用 virtual
关键字。
class Base {
public:
virtual ~Base() { ... } // `virtual` causes error (not compile time or syntax) or wrong behaviour
// could contain other fields
};
// some example
最佳答案
使析构函数虚拟
可能会将您的类
从非多态类型转换为多态类型。
请注意,多态类型永远无法简单地复制。因此,例如,您可以通过引入虚拟析构函数来中断对 std::memcpy
的任何使用。
在某些情况下——尤其是在与 C 互操作时——这可能会造成严重破坏,因为你不能再假设你的 class
实例的地址与第一个成员的地址相同.
引用:https://en.cppreference.com/w/cpp/types/is_trivially_copyable
关于c++ - 无法在析构函数上使用 virtual 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56543335/