目录
9.3作用域分辨运算符的的用途
作用域解析运算符(Scope Resolution Operator)是C++中的一种运算符,用于指定标识符的作用域。它以两个冒号(::)表示。
1.访问类的静态成员
class MyClass {
public:
static int num;
static void function();
};
// 访问类的静态成员
MyClass::num = 10;
MyClass::function();
2.解决命名冲突
当存在多个作用域中具有相同名称的标识符时,可以使用作用域解析运算符来明确指定要使用的标识符所属的作用域。
int num = 5;
namespace MyNamespace {
int num = 10;
void printNum() {
// 访问全局作用域的 num
std::cout << ::num << std::endl;
// 访问命名空间作用域的 num
std::cout << MyNamespace::num << std::endl;
}
}
MyNamespace::printNum(); // 输出:5 10
3.访问枚举成员
在枚举类型中,可以使用作用域解析运算符来访问枚举的成员。
enum MyEnum {
VALUE1,
VALUE2
};
// 访问枚举的成员
MyEnum var = MyEnum::VALUE1;
4.访问命名空间成员
namespace MyNamespace {
int num;
void function();
}
// 访问命名空间的成员
MyNamespace::num = 10;
MyNamespace::function();
5.嵌套类的访问
在一个类内部定义的嵌套类,可以使用作用域解析运算符来访问外部类的成员。
class Outer {
public:
int num;
class Inner {
public:
void function(Outer& obj) {
// 访问外部类的成员
obj.num = 10;
}
};
};
总结:作用域解析运算符是C++中的一个重要运算符,用于指定标识符的作用域,包括命名空间、类、结构体、枚举等。它可以用于访问命名空间成员、类的静态成员,解决命名冲突,访问嵌套类和访问枚举成员等场景。