【问题标题】:The '->' operator [duplicate]'->' 运算符 [重复]
【发布时间】:2016-10-20 04:56:13
【问题描述】:

问这个相当“愚蠢”的问题的原因是我真的不知道如何在谷歌上搜索它或如何在 SO 上搜索它。问题是关于 '->' 运算符,它可用于从对对象的引用中访问方法和变量。例如:

exClass* exObjPtr = new exClass;
exObjPtr -> exMethod();

我不知道这个 (->) 运算符叫什么,我在搜索 SO 时无法 google 或找到它,因为下界将允许特殊字符 '>' 的灼烧。

问题:

  1. 在哪里可以找到有关此主题的更多信息?
  2. 这个操作叫什么。
  3. 据我目前了解,(->) 操作是某种“语法糖”,用于取消引用对象并访问其成员。此操作的“非糖语法”是什么。

提前为我的菜鸟英语道歉! 你的时间!

【问题讨论】:

  • “可用于从对对象的引用中访问方法和变量。”不,它是从 pointers 访问,而不是 references
  • 1) 题外话 2) Here 3) Here 这就是为什么您应该每个问题发布一个问题;现在我不知道是否将其关闭为上述之一的欺骗或 vtc 作为题外话。 :/ (E: 谢天谢地,hvd 让我摆脱了这个困境。:))
  • 更多信息可以在任何关于 C++(和 C)的课程中找到,真的。该运算符通常被称为“arrow operator”。在 C 中,a->b(*a).b 的糖。在 C++ 中,大多数运算符都可以被覆盖,包括 ->,这意味着它不应该被称为语法糖。
  • @BaummitAugen 第二个问题询问操作的名称,而不是操作符的名称。无论如何,第一个和第二个问题也由另一个问题的答案来回答,这就是为什么我觉得支持作为副本结束是可以的。
  • 嗯,你可以做的不仅仅是搜索。查找list of operators in C++ on Wikipedia 怎么样?研究有时(通常!)不仅仅是将一个短语输入 Google 并希望将答案传递给您:您必须阅读学习!这就是为什么我并不总是相信“我不知道要搜索什么”的理由......无论如何,希望这将是一个教训,从现在开始你的研究会更好。 :)

标签: c++ pointers reference


【解决方案1】:

箭头运算符。它用于访问指针指向的对象的成员。通常你只会使用点:

Rectangle r;
r.length = 5;

但是当对象是指针时,我们会这样做

Rectangle* r = new Rectangle;
r->length = 5;

的简写形式
(*r).length = 5;

【讨论】:

  • @Dr.Haimovitz iPhone 自动更正...而且它显然不叫那个,只是箭头。
  • 指针的成员??
  • @machine_1 哦,伙计,我不太擅长这个,是吗。修复了!
【解决方案2】:

首先,它被称为pointers - Arrow operator(或简称为箭头)

这个操作符是这样工作的:

Type* a;
Type b;
a->method();
// same as (*a).method();
b.method();

【讨论】:

  • “它叫pointers - Arrow operator你能提供任何证据来支持这个吗?
猜你喜欢
  • 2020-01-25
  • 2014-02-25
  • 2015-06-20
  • 2012-08-23
  • 2011-07-28
  • 2010-12-16
  • 2011-11-06
  • 2013-09-07
  • 2015-06-13
相关资源
最近更新 更多