C++中作用域限定符"::"
在不同作用域內宣告的變數可以同名,但如果區域性變數和全域性變數同名,在區域性變數作用域內如何訪問全域性變數?C語言沒有提供同名情況下訪問全域性變數的方法。在C++中,可以通過使用作用域限定符(::)(scope resolution operator)來區別同名的全域性變數
例2-27 在區域性變數作用域內利用作用域限定符訪問同名的全域性變數
Cpp程式碼
#include <iostream.h>
int amount=123; //輸出全域性變數
void main()
{
int amout=456; //區域性變數
cout <<::amout << ' ,'; //輸出全域性變數
cout <<amout << ' ,'; //輸出區域性變數
::amout=789;
cout <<::amout << ' ,'; //輸出全域性變數
cout <<amout << '\n'; //輸出區域性變數
}
#include <iostream.h>
int amount=123; //輸出全域性變數
void main()
{
int amout=456; //區域性變數
cout <<::amout << ' ,'; //輸出全域性變數
cout <<amout << ' ,'; //輸出區域性變數
::amout=789;
cout <<::amout << ' ,'; //輸出全域性變數
cout <<amout << '\n'; //輸出區域性變數
}
執行結果為:
123,456,789,456
注意:作用域限定符(::)只能用來訪問全域性變數,不能用於訪問一個在語句塊外宣告的同名區域性變數。下列程式碼是錯誤碼的。
void main()
{
int amount=123;
{
int amount=456;
::amout=789;
:
}
}