gpt4 book ai didi

c++ - 接口(interface)的虚拟析构函数

转载 作者:可可西里 更新时间:2023-11-01 15:37:14 25 4
gpt4 key购买 nike

接口(interface)是否需要虚拟析构函数,还是自动生成的就可以?例如,以下两个代码片段中哪个最好,为什么?请注意,这些是整个类(class)。没有其他方法、变量等。在 Java 中,这是一个“接口(interface)”。

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.
};

由于“不是我要找的”答案而编辑:

具体每条路线的后果是什么。请不要给出诸如“它不会被正确销毁”之类的模糊答案。请确切地告诉我会发生什么。我有点像装配 Nerd 。

编辑 2:

我很清楚“虚拟”标记意味着如果通过指向派生的指针删除析构函数将不会被调用,但是(我认为)这个问题最终归结为“省略该析构函数是否安全,因为它真的微不足道吗?”

编辑 3:

我的第二次编辑完全是错误的和虚假信息。请阅读实际聪明人的评论以获取更多信息。

最佳答案

考虑以下情况:

   Base *Var = new Derived();
delete Var;

您需要虚拟析构函数,否则当您删除 Var 时,将永远不会调用派生类的析构函数。

关于c++ - 接口(interface)的虚拟析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2969383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com