在C++中,::
和 :
有不同的用途。
::
(作用域解析运算符)
::
被称为作用域解析运算符。它用于指定一个名称(如变量、函数、类型等)属于哪个命名空间或类。
- 全局作用域:如果你有一个全局变量
x
,你可以使用::x
来明确地从函数或其他作用域内部引用它。
int x = 10;
void func() {
int x = 5;
std::cout << "Local x: " << x << std::endl;
std::cout << "Global x: " << ::x << std::endl;
}
- 命名空间:用于指定一个名称属于哪个命名空间。
namespace MyNamespace {
int y = 20;
}
int main() {
std::cout << "MyNamespace::y: " << MyNamespace::y << std::endl;
return 0;
}
- 类:用于指定一个成员属于哪个类。
class MyClass {
public:
static int z;
};
int MyClass::z = 30;
int main() {
std::cout << "MyClass::z: " << MyClass::z << std::endl;
return 0;
}
:
(继承)
在C++的类定义中,:
用于表示继承。它指定了一个类从另一个类继承。
class Base {
public:
void foo() { std::cout << "Base::foo()" << std::endl; }
};
class Derived : public Base {
public:
void bar() { std::cout << "Derived::bar()" << std::endl; }
};
int main() {
Derived d;
d.foo(); // 输出 "Base::foo()"
d.bar(); // 输出 "Derived::bar()"
return 0;
}
在上面的例子中,Derived
类从 Base
类公开继承,因此 Derived
类的对象可以调用 Base
类的公有成员函数。