【发布时间】:2020-11-02 11:10:18
【问题描述】:
我们知道基类析构函数被标记为虚拟,以便正确销毁派生类实例作为基类型指针。那么下面这些派生类析构函数的做法有什么区别呢?
- 简单的析构函数:
~Derived(); - 带覆盖的析构函数:
~Derived() override; - 带覆盖的默认析构函数:
~Derived() override = default; - 虚拟析构函数:
virtual ~Derived() override = default;
还有已知的最佳实践吗?
【问题讨论】:
-
1.和 2. 是一样的。
override只是给你编译器检查。 3.和4.也一样。virtual派生到子类。在子类中没有必要。如果设置了override,virtual是多余的。恕我直言 dont declare a destructor if you don't need it, declare a destructor withoverride` 和default如果您需要声明,如果您需要自定义析构函数,请使用override声明析构函数。
标签: c++ c++11 destructor