IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

日本語難しい

「どのような派生クラス(もしくは、データメンバかつ/または(and/or)派生クラスの基底クラス、あるいは、派生クラスのデータメンバのデータメンバの基底クラス、あるいは、派生クラスのデータメンバの基底クラスと基底クラスとデータメンバの再帰的な組み合わせすべて)は、何らかの意味を持つデストラクタを持ち(あるいは、持つだろう)、そして、どこかに存在するコードが基底クラスのポインタを使って派生クラスを削除する可能性があるならば、基底クラスのデストラクタがvirtualである必要がある」

ある程度経験を積んだC++プログラマは絶対にvirtualデストラクタのないクラスを継承しない? - 神様なんて信じない僕らのために
if (
    (
        派生クラス or
        (
            (
                データメンバ or
                派生クラスの基底クラス
            ) or
            (
                データメンバ and
                派生クラスの基底クラス
            ) or
            派生クラスのデータメンバの基底クラス or
            再帰的な組み合わせ (
                派生クラスのデータメンバの基底クラス,
                基底クラス,
                データメンバ
            )
        )
    ) が意味のあるデストラクタを持つ and
    基底クラスのポインタを使って派生クラスを削除する可能性がある
) {
    デストラクタに virtual 付けろ
}

うーん