https://www.cnblogs.com/xinxue/p/5471708.html
2オーバーライド(上書き)
エラーを回避するために、1.2.2で述べたoverrideキーワードは、派生クラスの仮想関数を忘れて書き換えます
仮想関数をオーバーライドするには、次の4つのエラー、例を作るのは簡単、細部
クラスBase { パブリック: 仮想ボイドMF1()constは、 仮想ボイドMF2(int型x)は; 仮想ボイドMF3()&; 空MF4()constは、//は、Baseの仮想宣言されていません }; 派生クラス:公衆基地{ パブリック: 仮想ボイドMF1()。// Baseのconstとして宣言しますが、派生ありませんで。 仮想ボイドMF2(unsigned int型のX); //は基本のintがかかりますが、派生ではunsigned int型 &&)(仮想ボイドMF3。//左辺値修飾Baseのが、右辺値修飾派生です。 空MF4()constは、 }。
派生クラスでは、オーバーライド(上書き)実現(実装)Chengziチクラスのメンバ関数に続いて、以下の条件を満たします:
仮想ベースクラスのメンバ関数が仮想宣言されている(仮想)
二つの受信:例外仕様(例外仕様)は互換性がなければならない基本クラスと派生クラス、型、およびメンバ関数を返します
四つのベースクラスと派生クラス、メンバ関数名、パラメータ・タイプ、定数属性(const性)と参照修飾子(参照修飾子)が同一でなければなりません
だから、条件を制限し、上記のように非常に簡単かつ不注意なミス以来、コードを書き換える仮想関数の結果
overrideキーワードでC ++ 11には、明示的に派生クラス内で宣言することができ、書き換えられない場合メンバ関数は、書き換えられるために必要なものを、コンパイラが文句を言うでしょう。
派生クラス:公衆基地{ パブリック: 仮想ボイドMF1()オーバーライド。 仮想ボイドMF2(unsigned int型x)をオーバーライド。 仮想ボイドMF3()をオーバーライド&&。 仮想ボイドMF4()constはオーバーライド。 }。
このように、誤って仮想関数の書き換えの過酷な条件を残していても、またはコンパイラを与えられていることで、素早く正確なミス
派生クラス:公衆基地{ パブリック: 仮想ボイドMF1()constのオーバーライド。//「仮想」を追加する必要がOKではなく、 仮想ボイドMF2(int型x)をオーバーライド。 MF3を無効()&上書きします。 空MF4()constはオーバーライド。 }。
要約:
1) 公共の継承
純粋仮想関数=>継承がある:インターフェイス(インターフェイス)
:一般的な仮想関数=>継承は、あるインタフェースおよびデフォルト(デフォルトの実装)を達成します
非仮想メンバ関数=>継承され:インタフェースと強制(必須実装)
2)リレーChengzi智クラス非仮想関数を再定義しないでください (再定義することはありません 継承仮想非機能)
3)関数宣言を書き換える必要がある後、キーワードの追加 オーバーライドを