在C++中,双冒号(::)被用作作用域解析运算符。
类作用域解析运算符
在C++中,如果要在类的定义外部定义或实现成员函数或静态成员变量,则必须使用双冒号运算符来引用类作用域中的成员。例如,如果有一个类叫做MyClass,其中有一个名为myMethod的成员函数,则可以使用以下方式引用该函数:
void MyClass::myMethod() {
//函数体
}
其中的MyClass::表示myMethod属于MyClass类的作用域。
命名空间作用域解析运算符
在C++中,可以使用命名空间来避免名称冲突。如果在不同的命名空间中有同名的函数或变量,则需要使用双冒号运算符来指定使用哪个命名空间中的函数或变量。例如:
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;
}
在上面的示例中,我们使用双冒号运算符来引用ns1和ns2命名空间中的变量和函数。