スコープ解決演算子 :: (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
}