Какое официальное название оператора стрелки (->) в C++?
Я всегда называю это "оператором стрелки", но я уверен, что у него есть официальное название. Я быстро просмотрел стандарт C++ и не увидел его по имени.
11 ответов
Бьярн Страуструп называет это оператором "разыменования указателя структуры" (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.
Лично я просто говорю указатель или стрелка.