::(范围解析)运算符用于获取由于变量范围而导致的隐藏名称,以便您仍然可以使用它们。作用域解析运算符可用作一元和二元。如果命名空间范围或全局范围名称在块或类期间被等效名称的特定声明隐藏,则可以使用一元范围运算符。例如,如果您有一个名称为 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; // 将全局 my_var 设置为 1 my_var = 2; // 将本地 my_var 设置为 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; // 定义静态数据成员 int main () { int X = 0; // 隐藏类类型 X cout << X::count << endl; // 使用类 X 的静态成员 }输出结果
这将给出输出 -
10