次の方法で共有


名前と修飾名

バイナリ スコープ解決演算子 (::) と共に使用される名前は、"修飾名" と呼ばれます。 バイナリ スコープ解決演算子の後ろに指定される名前は、演算子の左側で指定されたクラスのメンバーまたはその基底クラスのメンバーである必要があります。

メンバー選択演算子 (. または –>) の後ろに指定される名前は、演算子の左側で指定されたオブジェクトのクラス型のメンバーまたはその基底クラスのメンバーである必要があります。 メンバー選択演算子 (–>) の右側に指定される名前は、–> の左側がクラス オブジェクトであり、そのクラスで他のクラス型へのポインターに評価されるオーバーロードされたメンバー選択演算子 (–>) が定義されていれば、別のクラス型のオブジェクトにもできます。 この条件については、「クラス メンバーに対するアクセス」で詳しく説明します。

コンパイラは、次の順序で名前を検索し、名前が見つかると検索を停止します。

  1. 名前が関数内で使用されている場合は現在のブロック スコープを、それ以外の場合はグローバル スコープを検索する。

  2. 現在のブロックを囲む各ブロックを外側へ、(関数の引数が含まれる) 最も外側の関数スコープまで検索する。

  3. 名前がメンバー関数内で使用されている場合は、そのクラスのスコープで名前を検索する。

  4. そのクラスの基底クラスで名前を検索する。

  5. 入れ子の外側のクラス スコープ (存在する場合) とその基底クラスを検索する。 最も外側を囲むクラス スコープが検索されるまで検索を続行する。

  6. グローバル スコープを検索する。

ただし、この検索順序は、次のように変更できます。

  1. :: の後ろの名前については、グローバル スコープから検索を開始する。

  2. class、struct、および union の各キーワードの後ろの名前については、コンパイラは class、struct、または union 名のみを検索する。

  3. スコープ解決演算子 (::) の左側にある名前は、class、struct、namespace、または union 名のいずれかである可能性のみを持つ。

名前が非静的メンバーを参照しているにもかかわらず、静的メンバー関数で使用されている場合は、エラー メッセージが生成されます。 同様に、名前が外側のクラスの非静的メンバーを参照している場合も、内側のクラスには外側のクラスの this ポインターがないため、エラー メッセージが生成されます。

参照

関連項目

スコープ規則の概要