私はC++である場合:私はclass B
にmyfunction
定義からvirtual
を削除した場合、それは私がclass C
、class B
に基づいていた場合、私はそれ以来、myfunction
をオーバーライドすることができなかったということを意味して次にC++仮想関数の実装?
class A {
private: virtual int myfunction(void) {return 1;}
}
class B: public A {
private: virtual int myfunction(void) {return 2;}
}
静的にコンパイルされますか?
また、私はあなたが一般公開されたときに何が起こるか混乱しています。 class B
のmyfunction
の定義を公開するように変更した場合(これはclass A
のものが非公開のままです)、これは私がしてはならない重大なエラーですか?仮想関数は同じ型を保持する必要があるので違法だと思うが、それが間違っているかどうかを教えてください。
ありがとうございます!
派生クラスのメソッドに "virtual"キーワードを明示的に記述する必要はありません。あなたはそれを省略することができますが、それを持つのは良いスタイルです。 – varnie