C で純粋な仮想デストラクタが必要なのはなぜですか?
仮想デストラクタは、オブジェクトを処理するときにオブジェクトを適切にクリーンアップするために C で不可欠です。継承とポリモーフィズム。しかし、なぜ特に 純粋な 仮想デストラクタが必要なのでしょうか?
純粋な仮想デストラクタを使用する場合
純粋な仮想デストラクタは主に次のような場合に使用されます。クラスを抽象として宣言したい。これは、抽象クラスから派生したクラスがデストラクターをオーバーライドする必要があることを意味します。
ただし、デストラクターを純粋仮想化しても、クラスが自動的に抽象化されるわけではないことに注意してください。メンバー関数の いずれか を純粋仮想にすることで、クラスを抽象化できます。
抽象クラスでデストラクターを純粋仮想にするのは良い習慣ですか?
いいえ、抽象クラスでデストラクターを純粋な仮想にすることは一般に良い習慣とは考えられていません。クラスを抽象として宣言するには、単純な仮想デストラクターで十分です。
その理由は、クラスの作成者が暗黙的なデストラクターを定義していない場合、コンパイラーが派生クラスの暗黙的なデストラクターを自動的に生成するためです。この暗黙的なデストラクターは純粋な仮想ではありません。つまり、基底クラスの純粋な仮想デストラクターだけの理由で派生クラスが抽象になることはありません。
追加の利点
クラスを抽象化するという目的には厳密には必要ありませんが、純粋な仮想デストラクターは派生クラスへの思い出として便利な場合があります。特定のクリーンアップ コードが必要です。ただし、このアプローチはいくぶん人為的で強制的ではないと考えられています。
結論
C では、純粋仮想デストラクターは、純粋仮想クラスと同様に、クラスを抽象として宣言するために必須ではありません。メンバー関数はこの目的を果たすことができます。その主な利点は、特定のクリーンアップ コードが必要であることを派生クラスに通知することです。
以上がC デストラクターを純粋仮想にする必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。