どのような機能は、仮想関数になっていないのですか?

  • 継承することができないと機能が過負荷になっていることはできません。

1)通常の関数

正常な機能を継承することはできません、メンバー関数に属していません。通常の機能は、過負荷状態にすることができ、書き換えができないので、仮想関数を宣言しても意味がありません。コンパイラはコンパイル時に機能をバインドしますので。

多型は、実行時バインディングを反映します。多型は、一般的にベースポインタによってサブクラスの目的を達成するためにポイント。

2)フレンド関数

フレンド機能は継承できません、クラスのメンバ関数に属していません。機能のために仮想関数を言っていない特性を継承しません。

3)コンストラクタ

最初のコンストラクタは、オブジェクトを初期化するために使用され、コンストラクタは何かと言います。サブクラスは、基本クラスのコンストラクタを継承することができた場合は、基底クラスのコンストラクタと基底クラスのコンストラクタを使用して、クラスオブジェクトのコンストラクタは、サブクラスの任意のメンバーが意味論に沿ったもので、明らかではありません知りません。別の観点から、多型は、多型塩基のクラスポインタポインティングサブクラスオブジェクトによって達成される、オブジェクトの前にオブジェクトを生成するように構成されていない矛盾している多型の性質を、使用することができません。したがって、コンストラクタは継承することはできません。

4)インラインメンバ関数

私たちは、インライン関数を呼び出しがかかり、コスト低減機能を、コードに直接展開している知っている必要があります。そのインライン関数は、コンパイル時に展開されます。そして、ポリモーフィズムを実現する仮想関数は、実行時にバインドされています。したがって、明らかインライン関数と特性多型は反対です。

5)静的メンバ関数

まず、静的メンバ関数理論は継承可能です。しかし、スタティックメンバ関数はコンパイル時に決定され、結合ダイナミックではない、マルチ状態をサポートしていないので、書き換えができない、それが仮想宣言することはできません。

おすすめ

転載: www.cnblogs.com/dingou/p/11627596.html