C++ 中的作用域解析运算符
::(范围解析)运算符用于获取由于变量范围而导致的隐藏名称,以便您仍然可以使用它们。作用域解析运算符可用作一元和二元。如果命名空间范围或全局范围名称在块或类期间被等效名称的特定声明隐藏,则可以使用一元范围运算符。例如,如果您有一个名称为my_var的全局变量和一个名称为my_var的局部变量,要访问全局my_var,您将需要使用范围解析运算符。
例子
#include输出结果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输出结果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