2
4

1 に答える 1

4

~CharArray名前付きのクラス内で名前付きのメンバーを宣言するConcreteCharArrayことは、単に違法です。これは、コンパイラがあなたに伝えていることです。の存在は~、デストラクタを宣言していることを示し、デストラクタの名前はクラスの名前と一致する必要があります。

デストラクタは特別なメンバー関数です。それらの特別なプロパティの 1 つは、基本クラスの仮想デストラクタをオーバーライドするために、派生クラスでそのデストラクタの名前を一致させる必要がないことです (通常のメンバー関数で通常行うように)。コンパイラは、名前が異なっていても、デストラクタを自動的に相互に照合します。各クラスにはデストラクタが 1 つしかないため、これは簡単に実行できます。

したがって、クラスでデストラクタを宣言する場合ConcreteCharArrayは、その destructor を呼び出す必要があります~ConcreteCharArray。他のオプションはありません。派生デストラクタの名前がベース デストラクタの名前と異なっていても、派生デストラクタは仮想として扱われ、ベース デストラクタをオーバーライドします。

于 2013-09-15T02:10:30.197 に答える