The :: operator is scope resolution operator.
when used with class specifier as like A::a, it is to access the data memeber a of the class A.
when used without any specifier, it access the global variable.
It is used mainly in the following contests.
- To refer to the global variables.
- To refer to the static members of the class
- To avoid ambiguites, when a class inherits from multiple [ non-virtual
base ] classes.
- With using directive, to use the base class functions in the derived class, when there is a function in base class with name same as that of the derived class, but for a different type.
- To access the functions defined in the global scope, when you have a function defined with the same signature, as in double temp = ::atof(num.c_str());
- To create objects of the nested classes.