在c++中,点(.)操作符和->有什么区别?


当前回答

箭头操作符与点操作符类似,只是它先对指针进行解引用。foo.bar()在对象foo上调用方法bar(), foo->bar在指针foo指向的对象上调用方法bar。

其他回答

的。运算符用于直接成员访问。

object.Field

箭头解除了对指针的引用,这样你就可以访问它所指向的对象/内存

pClass->Field

的。(点)运算符通常用于从类的实例(或类的静态字段/方法)中获取字段/调用方法。

p.myField, p.myMethod() -一个类的p个实例

->(箭头)操作符用于从类指向的内容获取字段/调用方法。

p->myField, p->myMethod() - p指向类

箭头操作符与点操作符类似,只是它先对指针进行解引用。foo.bar()在对象foo上调用方法bar(), foo->bar在指针foo指向的对象上调用方法bar。

当你有指针时使用->。 使用。当你有结构(类)时。

当你想要指向属于结构使用的属性时:

structure.attribute

当你想通过指针指向一个有内存引用的属性时,使用->:

pointer->method;

或与:

(*pointer).method

注意->操作符不能用于某些事情,例如访问操作符[]。

#include <vector>

int main()
{
   std::vector<int> iVec;
   iVec.push_back(42);
   std::vector<int>* iVecPtr = &iVec;

   //int i = iVecPtr->[0]; // Does not compile
   int i = (*iVecPtr)[0]; // Compiles.
}