これはC++用です。関数の宣言を継承したクラスヘッダにコピー&ペーストする必要がある理由
通常、ヘッダファイルに関数宣言があり、ソースファイルに定義されています。
//< A.hpp
class A
{
public:
virtual funcA();
virtual funcB();
}
そして、我々はAからクラスを継承しており、その機能を無効にしたい: は、私たちはいくつかの機能を持つクラスAを持っていると言います。
//< childA.hpp
class childA
{
virtual funcA();
virtual funcB();
}
我々はfuncA() funcB()
の宣言を変更する毎回では、我々は、子クラスのヘッダファイルに新しい宣言をコピーアンドペーストする必要があります。継承チェーンが長い場合、それはかなり厄介です。
私はObject-Cにこの問題がないことを覚えていますか?ウィキペディアにObjective-Cの記事から
なぜ** defintions **を子クラスのヘッダーファイルにコピーしますか?私はあなたが宣言を意味したと思う。子クラスが仮想関数を持っているならば、ソースファイルは実装を提供するでしょう。そうでなければ、基本クラスの仮想関数が呼び出されます。純粋な仮想メンバ関数ではないことを忘れないでください。 – Mahesh
修正されました。定義の代わりに宣言する必要があります。混乱させて申し訳ありません。はい、宣言が親クラスで変更された場合、子クラスのソースファイルは異なる実装を持つ可能性があるため、変更する必要があります。しかし、親クラスのヘッダーファイルに同じコードを持つ子クラスのヘッダーファイルも変更する必要があります。 –