首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >派生类破坏的最佳实践是什么?

派生类破坏的最佳实践是什么?
EN

Stack Overflow用户
提问于 2020-07-13 09:13:42
回答 1查看 157关注 0票数 0

我们知道基类析构函数被标记为虚拟类,以便将派生类实例正确地销毁为基类型指针。那么,以下派生类析构器实践之间有什么区别呢?

~Derived();

  • Destructor

  • 简单析构函数:带有覆盖的~Derived() override;

  • Default析构函数:~Derived() override = default;

  • Virtual析构函数:virtual ~Derived() override = default;

还有已知的最佳做法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 09:51:05

引物:我们期望Baseclass::~Baseclass是虚拟的,class Derived是从Baseclass派生出来的。

  1. 简单析构函数:如果没有从Derived派生的其他类(而且永远不会),您将基本上使用它。不要声明所有析构函数都是虚拟的,而是更喜欢使用override关键字,如2. Exception:您创建了一个碎片库,并希望人们安全地从您的库中删除类.

带有覆盖的

  1. 析构函数:如果您声明一个已取消的类并想要调用它的基类析构函数,请使用override。这样,如果忘记向baseclass desctructor.

添加virtual,就会得到编译错误。

带有覆盖和默认析构函数的

  1. 析构函数:如果忘记声明基类析构函数虚拟,也会收到编译错误。如果您不需要执行特殊的清理任务(例如释放堆分配的内存),请使用此方法。比编写~Derived() {}

更好/更干净

  1. 组合:嗯,声明一个析构函数虚拟并且也使用重写没有好处。重写将声明该方法(在本例中为destrcutor)为虚拟方式。见:https://en.cppreference.com/w/cpp/language/override。因此,它与3.

相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62872747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档