は、私は次のコードがあるとします。C++の派生クラスでオーバーライドされた関数を再宣言する必要があるのはなぜですか?
class Iinterface
{
virtual void abstractFunction()=0;
};
class Derived : public Iinterface
{
void abstractFunction(); // Do I need this line?
};
Derived::abstractFunction()
{
// implementation here
}
私は疑問に行を追加しない場合、私はabstractFunction
がDerived
で宣言されていないというエラーをコンパイルし得ます。私はVS 2008を使用しています。
なぜこの特定の行が必要なのか分かりません(これはクラス宣言の外で提供されている関数定義と混同しないでください)、Iinterface
から継承している限り明らかに私はabstractFunction
を宣言している。 Visual Studioに問題があるのですか、それともC++標準によって強制されていますか?
あなたはそれをはるかに良く集計しました:) –
私は同意します、これはおそらくわかりやすい答え、+1よりも理解できるでしょう。 – OmnipotentEntity
派生クラスが抽象クラスかどうかは、C++にはない明示的な "抽象"キーワードで知ることができます。 –