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