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

550 次浏览

开启你的 职业生涯

完成课程即可获得认证

立即开始
广告
© . All rights reserved.