為什麼 C++ 需要作用域限定符?


::(作用域限定符)運算子用於獲取由於變數作用域而隱藏的名稱,以便仍然可以使用它們。作用域限定符可以作為一元運算子和二元運算子來使用。

如果名稱空間的作用域或全域性作用域名稱被塊或類中同名的顯式宣告所隱藏,則可以使用一元作用域運算子。例如,如果你有一個名為 my_var 的全域性變數和一個名為 my_var 的區域性變數,要訪問全域性 my_var,則需要使用作用域限定符。例如:

示例

#include <iostream>  
using namespace std;  
int my_var = 0;
int main(void) {
   int my_var = 0;
   ::my_var = 1;  // set global my_var to 1
   my_var = 2;    // set local my_var to 2
   cout << ::my_var << ", " << my_var;
   return 0;
}

輸出

這將給出以下輸出:

1, 2

主函式中宣告的 my_var 宣告隱藏了在全域性名稱空間作用域中宣告的整數 my_var。語句 ::my_var = 1 訪問了在全域性名稱空間作用域中宣告的變數 my_var。

還可以使用作用域限定符來使用類名或類成員名。如果類成員名被隱藏,可以使用它並加上類名和類作用域運算子作為字首。例如:

示例

#include <iostream>
using namespace std;
class X {
   public:
   static int count;
};
int X::count = 10;    // define static data member
int main () {
   int X = 0;       // hides class type X
   cout << X::count << endl;     // use static member of class X
}

輸出

這將給出以下輸出:

10

更新於:2020 年 2 月 11 日

550 次觀看

開啟您的 事業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.