2009-10-16 2 views
40

Я всегда называю это «оператором стрелок», но я уверен, что у него официальное название. Я быстро просмотрел стандарт C++ и не видел, чтобы он упоминался по имени.Какое официальное название оператора стрелки C++ (->)?

+0

В черновике C99 я не могу найти упоминания о его названии. Он всегда называется «-> оператор» в этом документе. –

+0

@Mehrdad: Называть это «оператор стрелок» в индексе, хотя – AnT

+3

AndreyT: В индексе я вижу «оператор стрелки (->)» и «оператор указателя (->)» –

ответ

59

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

+3

Сначала упоминается в 5.2.4, но затем повсеместно с оператором точек. –

8

Согласно Wikipedia's list of operators in C and C++, это называется «член по указателю».

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

+1

Я читал это точно так же. Интересно, почему .... (P.S. Hi TO!) –

+1

Я нашел статью в Википедии, прежде чем я разместил вопрос. Несмотря на то, что он указан под столбцом «name» в таблице, я склонен полагать, что это описание, а не имя. – rmeador

27

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

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

+1

Я могу подтвердить, что это так. (Да, я на самом деле пошел на специальную версию языка программирования C++ и проверил его.) –

+19

он не изобретал C, откуда и пришел оператор. – asveikau

+2

asveikau, оба ваших утверждения верны, но что это касается вопроса? – John

12

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

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

0

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

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

4

Его просто бит (то есть не точка).

1

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

1

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

  • Выбор элемента Оператор
  • Указатель разыменования Оператор
  • "стрелка штуковина"

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

2

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

2

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

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

0

Был недавний вопрос о том, как оператор «произносится» в контексте. Рассмотрим оператор умножения, который произносится как «раз» в контексте.

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

Например, fido-> воротник() ... будет произнесен как «воротник fido».

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

+0

Это не по теме: ОП задал вопрос, как был вызван этот символ, и уже был предоставлен ответ со ссылкой на стандарт C++. Если был еще один вопрос относительно произношения символов, вы должны прокомментировать там, а не здесь. – DMH