为什么 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
广告
数据结构
网络通信
关系型数据库
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言
C++
C#
MongoDB
MySQL
JavaScript
PHP