-> 运算符:
通常用于通过指针访问对象的成员。
如果 p 是指向类对象的指针,那么 p->member 等同于 (*p).member。
用于简化通过指针访问成员的语法。
MyClass* ptr = new MyClass();
ptr->someMember; // 等同于 (*ptr).someMember;
. 运算符:
用于通过对象直接访问成员。
如果 obj 是一个类的对象,那么 obj.member 用于访问该对象的成员。
MyClass obj;
obj.someMember;
:: 运算符:
用于访问命名空间、类的静态成员或类的嵌套类。
在类内部,也可以用于指定静态成员或嵌套类的作用域。
// 访问命名空间中的变量或函数
namespace MyNamespace {
int myVar;
}
int x = MyNamespace::myVar;
// 访问类的静态成员
class MyClass {
public:
static int myStaticVar;
};
int y = MyClass::myStaticVar;
// 在类内部使用 :: 限定符
class AnotherClass {
public:
static int anotherStaticVar;
void foo() {
int z = AnotherClass::anotherStaticVar;
}
};
总体而言,-> 通常用于通过指针访问对象成员,. 用于直接访问对象成员,而 :: 用于访问命名空间、类的静态成员或类的嵌套类。