It is possible to declare local and global variables of the same name. C++ provides the unary scope resolution operator (::) to access a global variable when a local variable of the same name is in scope. The unary scope resolution operator cannot be used to access a local variable of the same name in an outer block. A global variable can be accessed directly without the unary scope resolution operator if the name of the global variable is not the same as that of a local variable in scope.
1 // Fig. 6.23: fig06_23.cpp 2 // Using the unary scope resolution operator. 3 #include <iostream> 4 using std::cout; 5 using std::endl; 6 7 int number = 7; // global variable named number 8 9 int main() 10 { 11 double number = 10.5; // local variable named number 12 13 // display values of local and global variables 14 cout << "Local double value of number = " << number // prints 10.5 15 << "\nGlobal int value of number = " << ::number << endl; // prints 7 16 return 0; // indicates successful termination 17 } // end main