接口类是否需要虚析构函数,或者自动生成的析构函数就足够了?例如,以下两个代码片段中哪一个更好,为什么?请注意,这是整个类。没有其他方法、变量等。在Java中,这被称为“接口”。
class Base
{
public:
virtual void foo() = 0;
virtual ~Base() {}
};
或者...
class Base
{
public:
virtual void foo() = 0;
~Base() {} // This line can be omitted, but included for clarity.
};
由于“不是我所寻找的”答案而进行的编辑:
每种方法的后果究竟是什么?请不要给出含糊的答案,比如“它不会被正确地销毁”。请告诉我会发生什么。我有一点汇编迷。
Edit 2:
我很清楚“virtual”标记意味着如果通过指向派生类的指针删除,则析构函数不会被调用,但(我认为)这个问题归根结底是“省略析构函数是安全的吗,因为它真的很简单吗?”
编辑3:
我的第二次编辑是完全错误的和误导性的。请阅读实际聪明人的评论获取更多信息。