我们知道基类析构函数被标记为虚拟类,以便将派生类实例正确地销毁为基类型指针。那么,以下派生类析构器实践之间有什么区别呢?
~Derived();
~Derived() override;
~Derived() override = default;
virtual ~Derived() override = default;还有已知的最佳做法吗?
发布于 2020-07-13 09:51:05
引物:我们期望Baseclass::~Baseclass是虚拟的,class Derived是从Baseclass派生出来的。
Derived派生的其他类(而且永远不会),您将基本上使用它。不要声明所有析构函数都是虚拟的,而是更喜欢使用override关键字,如2. Exception:您创建了一个碎片库,并希望人们安全地从您的库中删除类.带有覆盖的
override。这样,如果忘记向baseclass desctructor.添加virtual,就会得到编译错误。
带有覆盖和默认析构函数的
~Derived() {}更好/更干净
相同。
https://stackoverflow.com/questions/62872747
复制相似问题