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.