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