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

在 main 函数中声明的 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日

422 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告