The Unary Scope Resolution Operator is used to access a global variable when a local variable of the same name exists.
For example, look at the following code
using namespace std;
int number = 100;
double number = 27.9;
int a = number;
// The global variable ::number is intended.
// This line should be: int a = ::number;
cout << a; cout << number; cout << ::number; } [/sourcecode] Question
What is the value of A going to be? 27.9 or 100?
Neither, it will be 27.
One can assume that because variable
a is an
int and the global variable
number is an
int, that the global variable
::number was intended over the local variable
However, the local variable
number that is a
double was used.
a is an
int, the value of the local variable
number is casted to an
int when assigned, so 27.9 becomes 27.
This can lead to difficult to solve bugs. The value should be 100 but is 27.
Looking at the code, this doesn’t look obviously wrong.
If a developer makes it a practice to always preface global variables with the Unary Scope Resolution Operator, such bugs can be avoided.