C++ スコープ・レゾリューション演算子 ::

C++:: (スコープ・レゾリューション) 演算子は、隠された名前を修飾して、 それらの名前を引き続き使用できるようにするために使われます。 ブロックまたはクラス内の同じ名前の明示宣言によって、 ネーム・スペース名またはグローバル・スコープ名が隠されている場合は、単項スコープ演算子を使用できます。 次に例を示します。

int count = 0;
 
int main(void) {
  int count = 0;
  ::count = 1;  // set global count to 1
  count = 2;    // set local count to 2
  return 0;
}
main() 関数で宣言された count の宣言は、 グローバル・ネーム・スペース・スコープで宣言された count という名前の整数を隠蔽します。 ステートメント ::count = 1 は、グローバル・ネーム・スペース・スコープで 宣言された count という名前の変数にアクセスします。

また、クラス・スコープ演算子を使用して、クラス名またはクラス・メンバーの名前を修飾することも できます。 隠されているクラス・メンバー名は、そのクラス名とクラス・スコープ演算子を修飾することによって、 使用することができます。

次の例では、変数 X の宣言によって、クラス型 X が隠されますが、 静的クラス・メンバー count は、クラス型 X とスコープ・レゾリューション演算子で 修飾することによって、まだ使用することができます。

#include <iostream>
using namespace std;
 
class X
{
public:
      static int count;
};
int X::count = 10;                // define static data member
 
int main ()
{
      int X = 0;                  // hides class type X
      cout << X::count << endl;   // use static member of class X
}

関連参照

IBM Copyright 2003