警告 C26443
オーバーライドするデストラクターで、明示的な 'override' または 'virtual' 指定子を使用しないでください。
この警告は、C++ Core Guidelines の C.128 に対する変更を反映するために、Visual Studio 16.8 で削除されました。
C++ Core Guidelines
C.128: 仮想関数は、virtual、override、final のうちの 1 つだけを指定する必要があります。
Core Guidelines に関する現在の一致した見解は、「明示的にオーバーライド」の推奨事項からデストラクターを除外することです。
メモ
- この規則では、'virtual' 指定子または 'override' 指定子を明示的に使用するオーバーライド デストラクターにフラグが付けられます。
- 'final' 指定子の特殊なセマンティクスにより、デストラクターは "final" 指定子を引き続き使用できます。
- 警告は、宣言ではなく関数定義に表示されます。 定義に仮想指定子が含まれていないために紛らわしい場合がありますが、それでも警告は適切です。
コード分析名: NO_EXPLICIT_DTOR_OVERRIDE
例: 明示的な 'override'
class Transaction {
public:
virtual ~Transaction();
// ...
};
class DistributedTransaction : public Transaction {
public:
~DistributedTransaction() override { // C26443
// ...
}
};