百科名片
申明變數或函式所屬類的符號:“::”。重載
初學者疑惑的是,弄不懂“變數名的重載”概念。因為,所有的重載都是大相逕庭的,所以我來解釋什麼叫“重載”。
“重載”,就像給兩個不同的人取了一個相同的名字。
比如,兩個人都叫張三,當他們來到你的面前,可你只想叫其中一個,怎么辦?
現實生活中,可能根據年齡或性別等,叫“大張”“小張”來區別,叫“男張”“女張”來區別。
作用域限定符
在不同作用域內聲明的變數可以同名,但如果局部變數和全局變數同名,在局部變數作用域內如何訪問全局變數?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;
}
}