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

时间:2012-02-12 02:12:46

标签: c++ pointers operator-keyword

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

如果可以的话,它们会帮助我更好地理解。 感谢。

3 个答案:

答案 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 您无法重载.运算符。