c++ 中双冒号::的作用
时间: 2024-04-11 16:22:17 浏览: 241
双冒号::是C++中的作用域解析运算符,它可以用于以下几个方面:
1. 命名空间中的作用:在命名空间中,双冒号::可以用于访问命名空间中的变量、函数或类等成员。例如,在上述代码中,ns1::x和ns2::x分别表示访问ns1和ns2命名空间中的x变量。
2. 类中的作用:在类中,双冒号::可以用于访问类的静态成员或嵌套类型。例如,假设有一个名为MyClass的类,其中包含一个名为myStaticVar的静态变量,则可以使用MyClass::myStaticVar来访问该变量。
3. 枚举类型中的作用:在枚举类型中,双冒号::可以用于访问枚举类型中的成员。例如,假设有一个名为MyEnum的枚举类型,其中包含一个名为MyEnumValue的成员,则可以使用MyEnum::MyEnumValue来访问该成员。
4. 全局作用域中的作用:在全局作用域中,双冒号::可以用于访问全局命名空间中的变量或函数。例如,假设有一个名为globalVar的全局变量,则可以使用::globalVar来访问该变量。
下面是一个使用双冒号::访问命名空间中变量和函数的例子:
```c++
#include <iostream>
namespace ns1 {
int x = 1;
void foo() {
std::cout << "ns1::foo() called" << std::endl;
}
}
namespace ns2 {
int x = 2;
void foo() {
std::cout << "ns2::foo() called" << std::endl;
}
}
int main() {
std::cout << ns1::x << std::endl; // 输出 1
std::cout << ns2::x << std::endl; // 输出 2
ns1::foo(); // 输出 "ns1::foo() called"
ns2::foo(); // 输出 "ns2::foo() called"
return 0;
}
```
阅读全文