" - >"运算符在C++中的含义是什么?

Bum*_*ang 3 c++ pointers operator-keyword

有人可以向我解释一下" - >"在C++中意味着什么吗?

如果可以的例子,它们可以帮助我更好地理解.谢谢.

Jer*_*man 9

它是取消引用后跟属性访问(或方法调用)的快捷方式.

在代码中,这里有一些这种等价的例子:

Foo *foo;

// field access
foo->bar = 10;
(*foo).bar = 10;

// method invocation
foo->baz();
(*foo).baz();
Run Code Online (Sandbox Code Playgroud)

当你有这么长的序列时,这是特别方便的.例如,如果你有一个单链表数据结构,其中每个元素都有一个指向下一个元素的指针,下面是查找第五个元素的等效方法(但是看起来更好一些):

linked_list *head, *fifth;
fifth = head->next->next->next->next;
fifth = (*(*(*(*head).next).next).next).next;
Run Code Online (Sandbox Code Playgroud)


Dav*_*rtz 6

它通常被称为"成员访问"运算符.基本上,a->b是一种更好的写作方式(*a).b.您可以将其a->b视为"访问b对象中的成员/函数a指向".你可以大声朗读(或者自己认为)作为" a会员访问b".

在我刚刚检查的结构化C++代码的随机样本中(来自不同人编写的几个不同项目),10%的代码行(不包括头文件)包含至少一个成员访问运算符.