作用域限定符

>>amout >>amout >>amout

百科名片

申明變數或函式所屬類的符號:“::”。

重載

初學者疑惑的是,弄不懂“變數名的重載”概念。
因為,所有的重載都是大相逕庭的,所以我來解釋什麼叫“重載”。
“重載”,就像給兩個不同的人取了一個相同的名字。
比如,兩個人都叫張三,當他們來到你的面前,可你只想叫其中一個,怎么辦?
現實生活中,可能根據年齡或性別等,叫“大張”“小張”來區別,叫“男張”“女張”來區別。

作用域限定符

在不同作用域內聲明的變數可以同名,但如果局部變數和全局變數同名,在局部變數作用域內如何訪問全局變數?C語言沒有提供同名情況下訪問全局變數的方法。在C++中,可以通過使用作用域限定符(::)(Scope Resolution Operator)來區別同名的全局變數但在C++中,當全局變數和局部變數名字相同,而重載時,就規定:
用 “::+全局變數名” 來稱呼全局變數。

示例

C++代碼
#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;
}
}

相關詞條

熱門詞條

聯絡我們