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

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

... вы должны включать каждый раз? Вам это никогда не нужно?

является одним из файлов заголовков для iostreams, частью стандартной библиотеки C ++, отвечающей за ввод / вывод; в этом случае вам нужно получить доступ к std::cout. Если вы не выполняете операции ввода-вывода в исходном файле, вам не нужно его включать - например, большинству файлов, содержащих определения классов, вероятно, не понадобится .

... тот же вопрос для стандартной библиотеки, когда вам не нужен std :: *?

std - это имя пространства имен, содержащего классы в стандартной библиотеке; это там, чтобы избежать конфликтов имен. Python имеет пакеты и модули для этого.

Вы можете использовать оператор using для переноса элементов из другого пространства имен в вашу текущую область, см. эту запись FAQ для примера (и объяснение того, почему плохо слепо сводить все из std в сферу!).

... почему «главная» часть является функцией? Вы когда-нибудь вызывали основную функцию? Почему это целое число? Почему в C ++ должна быть основная функция, а в Python нет?

Исполняемые операторы в C ++ должны содержаться внутри функции, а функция main определяется как место, где начинается выполнение. В Python исполняемые операторы могут быть размещены на верхнем уровне файла, а выполнение определено как.

Вы можете вызвать main(), если хотите - это всего лишь функция, в конце концов - но не часто есть причина сделать это. За кулисами большинство реализаций C ++ вызывают main() для вас, как только некоторая начальная служебная работа выполняется библиотекой времени выполнения.

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

... зачем вам нужен "std :: cout < <"? Разве это не слишком долго и сложно по сравнению с Python?

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

... почему вам нужно возвращать 0, даже если вы никогда не собираетесь его использовать?

Вы его используете; это значение, возвращаемое операционной системе в качестве состояния выхода из программы. [Тысяча сто тридцать одна]

43
задан informatik01 10 June 2019 в 09:22
поделиться

11 ответов

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

62
ответ дан 26 November 2019 в 22:32
поделиться

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

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

27
ответ дан 26 November 2019 в 22:32
поделиться

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

4
ответ дан 26 November 2019 в 22:32
поделиться

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

3
ответ дан 26 November 2019 в 22:32
поделиться

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

1
ответ дан 26 November 2019 в 22:32
поделиться

Согласно ] Список операторов C и C ++ в Википедии , он называется «элемент за указателем».

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

8
ответ дан 26 November 2019 в 22:32
поделиться

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

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

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

1
ответ дан 26 November 2019 в 22:32
поделиться

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

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

0
ответ дан 26 November 2019 в 22:32
поделиться

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

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

14
ответ дан 26 November 2019 в 22:32
поделиться

В индексе по ISO / IEC 9899: 1999 (стандарт C99) есть три записи индекса для 'оператора стрелки' (справа и под 'объединением' и 'структурой'), и относится к разделу 6.5.2.3 (Элементы структуры и объединения, в разделе, посвященном операторам Postfix). Тем не менее, нет упоминания о «стрелке» в разделе 6.5.2.3 или где-либо еще в стандарте, кроме индекса (любое другое появление «стрелки» является частью слова «узкий» или производным от слова «узкий»).

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

2
ответ дан 26 November 2019 в 22:32
поделиться

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

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

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

С другой стороны, владение не подходит для глаголов, так что ... fido-> запустить () ... произносится как «фидо бегает».

0
ответ дан 26 November 2019 в 22:32
поделиться