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 日

6K+ 次浏览

开启你的 职业生涯

通过完成课程来获得认证

开始
广告
© . All rights reserved.