默认析构函数可以自动生成为虚拟析构函数吗?
如果我定义了一个基类,但没有默认的析构函数,是否会自动生成一个默认的虚拟析构函数?
发布于 2009-07-13 02:06:38
不是的。将方法虚拟化是有成本的,而且C++的理念是不让您为您没有明确声明要使用的东西付费。如果虚拟析构函数是自动生成的,那么您就会自动付出代价。
为什么不直接定义一个空的虚拟析构函数呢?
发布于 2014-02-01 22:44:20
在C++ 11中,您可以使用:
class MyClass
{
// create a virtual, default destructor
virtual ~MyClass() = default;
};发布于 2009-07-13 10:27:47
是的,通过继承具有虚拟析构函数的基类。在这种情况下,您已经为多态类(例如vtable)付出了代价。
https://stackoverflow.com/questions/1117481
复制相似问题