Какое официальное название оператора стрелки (->) в C++?

Я всегда называю это "оператором стрелки", но я уверен, что у него есть официальное название. Я быстро просмотрел стандарт C++ и не увидел его по имени.

11 ответов

Решение

Стандарт C++ просто называет это "стрелкой" (§5.2.5).

Бьярн Страуструп называет это оператором "разыменования указателя структуры" (TC++PL Special Edition, стр. 102). В индексе он ссылается на него как на оператора "членского доступа".

Не уверен, что это "официально", но парень все-таки написал язык.

Официальное название этого оператора - оператор доступа члена класса (см. 5.2.5). Хотя это имя прилагается к обоим . а также -> операторы, это означает, что это больше имя группы. . также называется оператором точки и -> как оператор стрелки в стандартном тексте.

Добавлено позже: вышеизложенное относится к стандарту C++. C стандарт относится к -> только как оператор стрелки в индексе. Основной текст документа, кажется, не использует никакого конкретного имени.

Согласно списку операторов Википедии на C и C++, он называется "член по указателю".

Но, если честно, я всегда называл это "стрелой". Например, если бы у меня был код a->bЯ бы прочитал это как "стрелка б".

Это просто точка (то есть не точка).

Эти термины ни в коем случае не являются официальными, но я бы назвал точечный оператор прямым (классовым) доступом к элементу, а стрелочный оператор - косвенным (классовым) оператором доступа к члену, чтобы выяснить их связь с оператором косвенного обращения.

Я слышал, что это касалось нескольких разных способов, никогда не был уверен, что кто-то из них был более официальным, чем другой.

  • Оператор выбора участников
  • Оператор разыменования указателя
  • "стрела чтоли"

и я уверен, что есть другие. лично меня меньше беспокоит то, что это называется в книге или официальной спецификации, и я больше беспокоюсь о том, что люди знают, что я имею в виду, когда я на него ссылаюсь, поэтому, по моему мнению, "стрела штуковина" является лучшим названием для него, так как это самый простой четко понимать, о чем идет речь.

Указатель к ISO/IEC 9899:1999 (стандарт C99) содержит три элемента указателя для "оператора стрелки" (сам по себе и под "объединением" и "структурой") и ссылается на раздел 6.5.2.3 (Структура и члены объединения, в разделе об операторах Postfix). Однако в разделе 6.5.2.3 или где-либо еще в стандарте нет упоминания о "стрелке", кроме индекса (любое другое появление "стрелки" является частью "узкого" или производного от узкого).

Поэтому стрелка полуофициально санкционирована в стандарте C (хотя индекс не является ни нормативным, ни стандартным значением).

Указатель разыменования

Недавно возник вопрос о том, как оператор "произносится" в контексте. Рассмотрим оператор умножения, который произносится как "времена" в контексте.

Я рассматриваю оба оператора доступа членов {. ->} для обозначения владения, поэтому я объявляю их притяжательным объектом.

Например... fido->collar() ... будет произноситься как "воротник fido".

С другой стороны, владение не подходит для глаголов, поэтому... fido->run() ... будет произноситься как "fido run".

Стандарт ISO C называет это -> оператор или членский доступ -> оператор. Так что, видимо, у него нет "официального" названия на C.

Лично я просто говорю указатель или стрелка.

Другие вопросы по тегам