C++中,::
、->
和 .
在C++中,::
、->
和 .
是用于访问成员(如变量、函数等)的不同操作符,它们分别用于不同的场景。以下是它们各自的作用和用法:
-
双冒号
::
(作用域解析操作符)用于指定某个标识符(如变量、函数、类型等)的作用域。这通常用于访问类的静态成员、全局变量、枚举值,或者覆盖基类中被隐藏的成员。此外,
::
也用于命名空间中的名称解析。-
访问静态成员:
class MyClass { public: static int staticVar; }; int MyClass::staticVar = 10; // 使用作用域解析操作符访问静态成员
-
访问全局变量(避免与局部变量名冲突):
int globalVar = 10; void func() { int localVar = 5; std::cout << ::globalVar << std::endl; // 使用作用域解析操作符访问全局变量 }
-
命名空间中的名称解析:
namespace ns { int var = 10; } int main() { std::cout << ns::var << std::endl; // 使用作用域解析操作符访问命名空间中的变量 return 0; }
-
-
箭头
->
(成员访问操作符,用于指针)用于通过对象的指针访问其成员。当你有一个指向对象的指针时,需要使用
->
来访问该对象的成员。- 通过指针访问成员变量和成员函数:
class MyClass { public: int var; void func() { std::cout << "Hello" << std::endl; } }; int main() { MyClass* ptr = new MyClass(); ptr->var = 10; // 使用箭头操作符访问成员变量 ptr->func(); // 使用箭头操作符调用成员函数 delete ptr; return 0; }
- 通过指针访问成员变量和成员函数:
-
点
.
(成员访问操作符,用于对象)用于直接通过对象访问其成员。当你有一个对象实例时,使用
.
来访问该对象的成员。- 通过对象访问成员变量和成员函数:
class MyClass { public: int var; void func() { std::cout << "Hello" << std::endl; } }; int main() { MyClass obj; obj.var = 10; // 使用点操作符访问成员变量 obj.func(); // 使用点操作符调用成员函数 return 0; }
- 通过对象访问成员变量和成员函数:
总结:
::
用于指定作用域,通常用于访问静态成员、全局变量和命名空间中的名称。->
用于通过对象的指针访问成员。.
用于直接通过对象访问成员。