0

関数 A と B を持つ継承されたクラスがあるとします。B は何かを実行して A を呼び出します。基本クラスにも関数 A と B があります。B は別の方法で処理を行い、A (派生クラスの A) を呼び出します。ただし、特定の状況では、基本クラスの B を呼び出したいと考えています。これは、Base::B() を使用して行われます。次に、B が A に電話します。私の質問は、どちらの A に電話するかです。ベースのものまたは継承されたもの?

4

2 に答える 2

2

A が仮想かどうかによって異なります。仮想の場合は派生バージョンが呼び出され、そうでない場合はベース バージョンになります。

于 2013-04-15T11:37:16.943 に答える
0

ここでは一般的なシナリオを提案していますが、アルゴリズム (またはアルゴリズムのクラス) であるMRO、別名Method Resolution Orderを参照していると判断するだけで十分です。この頭字語を使用して、一般的なトピックまたは特定の単一のもの)を呼び出す必要があるメソッドを決定するために使用されます。

MRO が C++ の場合にどのように機能するかは、標準自体で説明されていますが、SO にはmethod-resolution-orderという名前の専用タグがあり、これについて幅広い見方を提供できる回答があります。

于 2013-04-15T11:40:18.557 に答える