通常情況下,如果有兩個(gè)同名變量,一個(gè)是全局變量,另一個(gè)是局部變量,那么局部變量在其作用域內(nèi)具有較高的優(yōu)先權(quán),它將屏蔽全局變量。
作用域運(yùn)算符
#include<iostream>
using namespace std;
int num=10;
int main()
{ int num;
num=25;
cout<<"num is "<<num<<endl;
return 0;
}
程序的輸出結(jié)果是num is 25。在main函數(shù)的輸出語句中,使用的變量num是main函數(shù)內(nèi)定義的局部變量,因此輸出的結(jié)果為局部變量num的值。
作用域運(yùn)算符可以用來解決局部變量與全局變量的重名問題
//如果我們希望在局部變量的作用域內(nèi)使用同名的全局變量,那么可以在該變量的前面加上“::”,此時(shí)“::num”就代表全局變量,::就是作用域運(yùn)算符。
#include<iostream>
using namespace std;
int avar; //全局變量定義
int main()
{ int avar; //局部變量定義
avar=25;
::avar=10;
cout<<"local avar = "<<avar<<endl;
cout<<"global avar = "<<::avar<<endl;
return 0;
}
結(jié)果是:
local avar =25
global avar =10
這個(gè)例子可以看出,作用域運(yùn)算符可以用來解決局部變量與全局變量的重名問題,即在局部變量的作用域內(nèi),可用::對(duì)被屏蔽的同名的全局變量進(jìn)行訪問。