【问题标题】:What is the official name of C++'s arrow (->) operator?C++ 的箭头 (->) 运算符的正式名称是什么?
【发布时间】:2010-12-07 12:51:09
【问题描述】:

我总是称它为“箭头操作符”,但我确信它有一个正式的名称。我快速浏览了 C++ 标准,并没有看到它的名称。

【问题讨论】:

  • 在 C99 草案中,我找不到任何提及它的名称。在该文档中它总是被称为“-> 运算符”。
  • @Mehrdad:在索引中确实称其为“箭头运算符”
  • AndreyT:在索引中,我可以看到“箭头运算符(->)”和“指针运算符(->)”
  • @Mehrdad:嗯,这为我们在 C 中为该运算符提供了一个正式的 (?) 名称 :)
  • (meta) 我们有标签吗?

标签: c++ c operators terminology


【解决方案1】:

根据Wikipedia's list of operators in C and C++,它被称为“指针成员”。

但老实说,我一直称它为“箭头”。例如,如果我有代码 a->b,我会将其读作“a arrow b”。

【讨论】:

  • 我在发布问题之前找到了维基百科的文章。尽管它列在表中的“名称”列下,但我倾向于认为这是描述,而不是名称。
【解决方案2】:

Bjarne Stroustrup 将其称为“结构指针取消引用”运算符(TC++PL 特别版,第 102 页)。在索引中,他将其称为“成员访问”运算符。

不确定这是否是“官方的”,但毕竟这个人确实写过这种语言。

【讨论】:

  • 我可以确认是这种情况。 (是的,我其实是去The C++ Programming Language Special Edition 看的。)
  • 他没有发明 C,这就是运算符的来源。
  • asveikau,您的两个陈述都是正确的,但这与问题有什么关系?
  • asveikau:确实如此。但是同一个运算符在不同的语言中可以有不同的名称,即使它是同一件事。问题特别是关于它在 C++ 中的名称。如果有什么答案,那就是。
  • 请注意,TC++PL 书籍不是关于 C++ 语言的正式和/或官方信息来源。 TC++PL 特意编写为更易于初学者使用。在一些主题上,为简单起见,它故意与官方资料相矛盾(即迂腐地说话,包含故意的错误)。 TC++PL 是一本好书,但是从 TC++PL 进入 C++ 的“官方”世界时必须小心。
【解决方案3】:

C++ 标准只是将其称为“箭头”(第 5.2.5 节)。

【讨论】:

  • 在 5.2.4 中首次提到,但后来也普遍使用点运算符。
【解决方案4】:

这个操作符的正式名称是类成员访问操作符(见5.2.5)。尽管此名称附加到 .-> 运算符,这意味着它更像是一个组名称。 . 在标准文本中也称为点运算符-> 称为箭头运算符

稍后添加: 以上适用于 C++ 标准。 C 标准仅在索引中将 -> 称为 箭头运算符。文档的正文似乎没有使用任何特定名称。

【讨论】:

    【解决方案5】:

    ISO C 标准将其称为 ->operatormember-access->operator。所以显然它在 C 中没有“官方”名称。

    就个人而言,我只是说指针箭头

    【讨论】:

      【解决方案6】:

      它只是一个小点(即不是点)。

      【讨论】:

        【解决方案7】:

        解引用指针

        【讨论】:

          【解决方案8】:

          我听说它提到了几种不同的方式,我从不知道任何一种特别是比另一种更正式。

          • 成员选择运算符
          • 指针解引用运算符
          • “箭头的东西”

          我相信还有其他人。就我个人而言,我不太关心它在书本或官方规范中的名称,而是更关心人们在我提到它时知道我的意思,所以在我看来“arrow thingy”是它的最佳名称,因为它最简单清楚地理解所指的内容。

          【讨论】:

            【解决方案9】:

            这些术语绝不是官方的,但我将点运算符称为直接(类)成员访问运算符,将箭头运算符称为间接(类)成员访问运算符 阐明它们与间接运算符的关系。

            【讨论】:

              【解决方案10】:

              ISO/IEC 9899:1999(C99 标准)的索引具有“箭头运算符”的三个索引条目(在其自身的权利中,在“联合”和“结构”下),并参考第 6.5.2.3 节(结构和联合成员,在 Postfix 运算符一节中)。但是,在第 6.5.2.3 节或标准中除索引之外的任何其他地方都没有提到“箭头”(“箭头”的所有其他外观都是“窄”的一部分或窄的派生词)。

              因此,Arrow 在 C 标准中得到了半官方认可(尽管该索引不是规范或标准设置)。

              【讨论】:

                【解决方案11】:

                最近有一个关于操作符在上下文中如何“发音”的问题。 考虑在上下文中发音为“times”的乘法运算符。

                我认为两个成员访问运算符 {. ->} 表示所有格,所以我将它们发音为宾语的所有格。

                例如... fido->衣领() ...会读作“fido 的项圈”。

                另一方面,占有不适合动词,所以... fido->运行() ...将发音为“fido runs”。

                【讨论】:

                • 这是题外话:OP询问该符号的名称,并且已经提供了引用C ++标准的答案。如果还有关于符号发音的其他问题,您应该在此处而不是此处发表评论。
                猜你喜欢
                • 1970-01-01
                • 2016-07-12
                • 2013-08-06
                • 2011-12-08
                • 2021-07-11
                • 1970-01-01
                • 2013-02-17
                • 2012-12-04
                • 2013-10-11
                相关资源
                最近更新 更多