全域vs區域
當全域變數跟區域變數同名時,C++該如何區別呢?
是的,只要scope不同,他們的命名就不會影響
int x;
main(){
int x;
}
在此狀況 他是可以編譯不過的,所謂名稱不可重複,是指同scope不可以有同個命名參數
上面的情況 第一個x的scope為全域,而第二個為main的區域變數,互不影響
但是改成如下就不行了
main(){
int x;
double x;//X
}
這時候問題來了,這種狀態下要如何區別x呢?
萬能的scope運算子::
::相信大家都用過,是用來區別他是屬於哪個namespace
而他也能幫我們區別出全域變數
int x;
main(){
int x=10;
::x=20;
cout<<"區域變數x:"<<x<<endl;
cout<<"全域變數x:"<<::x<<endl;
}
輸出結果就會是
區域變數x:10
全域變數x:20
當scope運算子前面沒有東西時,就代表他想呼叫全域物件
沒有留言:
張貼留言