有人可以向我解释一下“ - >”在C ++中意味着什么?
如果可以的话,它们会帮助我更好地理解。 感谢。
答案 0 :(得分:9)
这是取消引用后跟属性访问(或方法调用)的快捷方式。
在代码中,这里有一些这种等价的例子:
Foo *foo;
// field access
foo->bar = 10;
(*foo).bar = 10;
// method invocation
foo->baz();
(*foo).baz();
当你有这么长的序列时,这是特别方便的。例如,如果你有一个单链表数据结构,其中每个元素都有一个指向下一个元素的指针,以下是查找第五个元素的等效方法(但是看起来更好):
linked_list *head, *fifth;
fifth = head->next->next->next->next;
fifth = (*(*(*(*head).next).next).next).next;
答案 1 :(得分:6)
它通常被称为“成员访问”运算符。基本上,a->b
是编写(*a).b
的更好方式。您可以将a->b
视为“访问对象b
中的a
成员/函数指向”。您可以大声朗读(或自己认为)为“a
成员访问b
”。
在我刚刚检查的结构化C ++代码的随机样本中(来自不同人编写的几个不同项目),10%的代码行(不包括头文件)至少包含一个成员访问操作符。
答案 2 :(得分:1)
->
运算符与LHS上的指针(或类指针对象)以及RHS(lhs->rhs
)上的结构或类成员一起使用。它通常等同于(*lhs).rhs
,这是访问成员的另一种方式。如果忽略得墨忒耳定律并且需要写lhs->mid->rhs
(通常比(*(*lhs).mid).rhs
更容易阅读)会更方便。
您可以重载->
运算符,智能指针经常会这样做。 AFAIK 您无法重载.
运算符。