Scope Resolution Operator in C++
Scope Resolution Operator in C++
The scope resolution operator is denoted by :: in C++. Scope resolution operator (::) in C++ programming language is used to define a function outside a class or when we want to use a global variable but also has a local variable with the same name.
The scope resolution operator (::) basically does two things
- Access the global variable when we have a local variable with same name
- Define a function outside the class
Syntax of Scope Resolution Operator
:: global variable name
Resolution operator is placed between the front of the variable name then the global variable is affected.If no resolution operator is placed between the local variable is affected.
Using Scope Resolution Operator
#include<iostream.h> #include<conio.h> int n=12; //global variable int main() { int n=13; //local variable cout<<::n<<endl; //print global variable:12 cout<<n<<endl; //print the local variable:13 getch(); }
Output
12 13
If the resolution operator is placed between the class name and the data member belonging the class then data name belonging to the particularly class is affected.
If it is place front of the variable name then the global variable is affected. It is no resolution operator is placed then the local variable is affected.
Without Scope Resolution Operator
#include<iostream.h> #include<conio.h> int a = 100; // global variable a = 100 int main() { int a = 200; // local variable a = 200 cout << a << "\n"; // print a getch(); }
Since, you have defined a = 200 locally (within the int main() function) , the output will be 200 not 100.
Output
200
Scope Resolution Operator in C++
#include<iostream.h> #include<conio.h> int a = 100; // global variable void main() { int a = 200; //local variable clrscr(); cout<<"Local variable: " << a << "\n"; cout<<"Global variable: " << ::a << "\n"; //using scope resolution operator getch(); }
Output
Local variable: 200 Global variable: 100
Defining a Function Outside the Class
Scope Resolution Operator in class in C++
#include<iostream.h> #include<conio.h> class scope_resolution { public: void output(); //function declaration }; // function definition outside the class void scope_resolution::output() { cout << "Function defined outside the class.\n"; } void main() { clrscr(); scope_resolution x; x.output(); getch(); }
Output
Function defined outside the class