メソッドの仮想プロパティを継承することについて混乱があります。仮想関数の継承
クラスA、クラスB、クラスC、クラスDの4つのクラスがあるとしましょう。 クラスはこのように継承されます:A - > B - > C - > D、Aは基本クラスです。
これまでに、私はこれについて確信しています:基本クラス(クラスA)の仮想クラスメソッド宣言を開始すると、その基本クラスから派生したすべてのクラス派生クラス。 (仮想であると判定されたBおよびCクラスのメソッド)。
ここに混乱があります。基本クラスAに仮想メンバーがない場合はどうでしょうか?代わりに、クラスBが仮想メソッドを宣言しているとしましょう。私は、この変更によって、継承チェーン(CおよびDクラス)に属するすべての派生クラスの仮想関数が作成されると仮定します。論理的には、CとDのBは、一種の「基本クラス」ですよね?または私は間違っていますか?
クイック提案:基底クラスが仮想メソッドを持っている場合、私はと派生クラスに属している仮想メソッドの残りの部分を強調すべきですキーワードvirtual?もっと表現力豊かにするだけ。 –
それは必要ではありません。基本クラスで一度実行すると、すべての子クラスに関数実装(そのすべて継承)を変更することができます。 – theta
@RobertEagle派生クラスで 'virtual'や' override'を追加する必要はありません*、でも_yes_と言えば可能な限り、関数のセマンティクスのビジュアルリマインダを置くのがよい方法です。 * 'g ++'のようなコンパイラを使わない限り、これらの修飾子がない場合に警告を出し、警告をエラーとして扱うように指示しない限り。 –