過負荷、カバー、非表示

オーバーロードとは、同じ名前の関数のパラメーターリストが異なることを意味します。同じアクセスエリアで宣言された異なるパラメータリスト(異なるパラメータタイプ、番号、およびシーケンス)を持つ同じ名前のいくつかの関数では、プログラムは異なるパラメータリストに従って呼び出す関数を決定します。オーバーロードされた関数の呼び出しはコンパイル中に決定され、静的であり、それらのアドレスはコンパイル中にバインドされます。オーバーロードは、関数の戻り値のタイプを気にしません。

過負荷の特徴:

1.相同的范围(同一个类中)
2.函数名字相同
3.参数不同
4.virtual关键字可有可无。

オーバーライドとは、割り当てられたクラスの基本クラスを再定義する関数を指します。関数名、パラメーター列、および戻り値のタイプは、親クラスの対応するオーバーライドされた関数と厳密に一致している必要があります。関数本体のみがオーバーライドされた関数と異なります。クラスポインタは派生クラスオブジェクトを指します。同じ名前の関数が呼び出されると、親クラスのオーバーライドされた関数バージョンではなく、サブクラスのオーバーライドされたバージョンが自動的に呼び出されます。仮想関数テーブルはオブジェクトに格納され、オブジェクトがインスタンス化されるときに生成されるため、コンパイル中に関数呼び出しを決定することはできません。したがって、このような関数アドレスは実行時にバインドされます。

対象となる機能:

1.不同的范围(分别位于派生类和基类)
2.函数名字相同
3.参数相同
4.返回值类型相同
5.基类函数必须有virtual关键字。

過負荷とカバレッジの関係:

1.覆盖是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。
2.覆盖只能由一对方法产生关系;重载是两个或多个方法之间的关系。
3.覆盖要求参数列表相同;重载要求参数列表不同。
4.覆盖关系中,调用方法是根据对象的类型来决定的,重载关系是根据调用时的实参表与形参表来选择方法体的。

非表示は、同じ名前の基本クラス関数をシールドするために新しいクラスを割り当てる機能です。派生クラスの関数が基本クラスの関数と同じ名前であるがパラメーターが異なる場合、仮想キーワードに関係なく、基本クラスの関数は非表示になります。派生クラスの関数が基本クラスの関数と同じ名前と同じパラメーターを持っているが、基本クラスの関数に仮想キーワードがない場合、基本クラスの関数は非表示になります。

隠された機能

1.必须分别位于基类和派生类中``
2.必须同名
3.参数不同的时候本身已经不构成覆盖关系了,所以此时有无virtual关键字不重要
4.参数相同时就要看是否有virtual关键字,有就是覆盖关系,无就是隐藏关系

おすすめ

転載: blog.51cto.com/14289397/2540752