为什么 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.