警告 C26443
重写析构函数不应使用显式 “override” 或 “virtual” 说明符。
Visual Studio 16.8 中删除了此警告,以反映 C++ Core Guidelines 中 C.128 的更改。
C++ Core Guidelines
C.128:虚函数应从 virtual、override 或 final 中明确指定一个。
Core Guidelines 的当前共识是从“显式重写”建议中排除析构函数。
说明
- 规则标志重写显式使用“virtual”或“override”说明符的析构函数。
- 析构函数仍可以使用“final”说明符,因为其语义特殊。
- 警告显示在函数定义上,而不是声明上。 这可能令人困惑,因为定义没有虚拟说明符,但警告仍然适用。
代码分析名称:NO_EXPLICIT_DTOR_OVERRIDE
示例:显式“override”
class Transaction {
public:
virtual ~Transaction();
// ...
};
class DistributedTransaction : public Transaction {
public:
~DistributedTransaction() override { // C26443
// ...
}
};