C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .

Что такое С ++?

C ++ - это (в основном) статически типизированный, произвольный, (обычно) скомпилированный, мультипарадигмальный, промежуточный -уровневый язык программирования общего назначения; не путать с cили c++-cli. Он был разработан в начале 1980-х годов Бьярном Страуструпом, первоначально как набор расширений языка программирования C. Основываясь на C, C ++улучшил безопасность типови добавлена ​​поддержка автоматического управления ресурсами, объектной ориентации, общего программирования и обработки исключений, среди других функций.


Новичок в C ++?

Если вы новичок в программировании или переходите на C ++ с другого языка программирования, настоятельно рекомендуется иметь хорошую книгу для изучения языка. Мы храним подробный список книг.

Если вы ищете хорошие компиляторы, GCCявляется наиболее часто используемым компилятором в Linux и других Unix-подобных платформах; Clang- официальный компилятор для Mac и FreeBSD; Microsoft Visual C ++ является наиболее часто используемым компилятором в Windows. компилятор Intel® C ++также широко используется для оптимизированные численные вычисления для Windows, Linux и Mac.

Turbo-C ++ 3.0 с 1991 года крайне устарел и определенно не рекомендуется. Смотрите предыдущий абзац для свободного выбора из этого тысячелетия.

Присоединяйтесь к нам в чате, где мы обсуждаем C ++, программирование в целом и даже другие вещи, когда солнце садится и скука Подкрадывается. Не забывайте свое чувство юмора, но держите его цивилизованным.


c++Использование тегов

При публикации вопросов о программировании на C ++ обязательно указывайте:

  • Информация о целевой системе и компиляторе. Это включает имя компилятора, версию и параметры, используемые для компиляции.
  • Если ваш вопрос относится к одной конкретной версии языка, добавьте c++98c++03c++11c++14c++17, c++20или c++23. Вопросы о повышении следует добавить тег boost. Подробности о различных версиях можно найти ниже в этой вики.
  • Если в вопросе явно не указано, какая версия стандарта C ++ используется, предполагается, что используется текущая версия. То есть, в зависимости от версии ISO 14882, которая в настоящее время указана как активная. Помните об этом, когда отвечаете или комментируете вопросы с тегом c++.

Совместное использование cи c++

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

Вопрос должен быть помечен только c, если:

  • Он содержит чистый C, без следов C ++ или вопросы с кодом, который может быть любым языком.
  • Код компилируется с помощью компилятора Си.

Вопрос должен быть помечен только c++, если:

  • Он содержит код с любыми функциями C ++. Хотя код может быть "стиль C".
  • Код компилируется с помощью компилятора C ++.

Вопрос должен быть помечен как cи c++, если речь идет о:

  • Конкретные различия между C и C ++.
  • Совместимость или перенос кода между C и C ++.
  • Код C ++, использующий библиотеки C (например, код с использованием extern "C").

Правила редактирования и модерации для сообщений с тегами cи c++:

Чтобы редактировать / повторно помечать / модерировать вопросы с обоими тегами, рекомендуется, чтобы у вас были полные права редактирования и либо золотой c, либо золотой C ++значок .

Если вы столкнулись с сообщением с обоими тегами, отредактируйте / повторно пометите его, если необходимо, в соответствии с вышеуказанными правилами. Если вы можете сказать язык, прочитав опубликованный код, просто отредактируйте теги соответствующим образом. Избегайте подсказок пользователю "это C или C ++?" в комментариях, если вопрос действительно неясен.

Один пример неясного вопроса - когда пользователь явно заявляет, что он программирует на C, но публикует сообщения кода или компилятора для C ++. Если это так, запросите разъяснения и проведите закрытое голосование как неясное.

«С или С ++ - это хорошо», мнения ОП - явный признак плохого или неясного вопроса. Ответы могут быть очень разными в зависимости от выбранного языка. Запрашивать разъяснения, закрыть как неясные / слишком широкие, пока ФП не разъяснит это.

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

Ответы с кодом C ++ на вопрос C, который никогда не был помечен как c++, следует удалить как не по теме. Пожалуйста, проверьте историю редактирования вопроса, прежде чем отмечать / удалять такие ответы, чтобы убедиться, что у вопроса никогда не было тега C ++.


c++98

В 1998 году комитет по стандартам C ++ опубликовал первый международный стандарт для C ++ ISO / IEC 14882: 1998. , который был бы неофициально известен как C ++ 98.


c++03

В 2003 году Комитет C ++ отреагировал на многочисленные проблемы, о которых было сообщено с помощью c++98, и внес соответствующие изменения. Измененный язык получил название C ++ 03.


c++11

Языковой стандарт долгое время оставался практически неизменным, но в 2011 году в ISO/IEC 14882: 2011. Вместо того, чтобы подход «большого взрыва», он постепенно внедряется, так как компиляторы поддерживают новые языковые функции. См. часто задаваемые вопросы Бьярна Страуструпа по C ++ 11, чтобы узнать, что нового в языке, и проверить FAQ своего собственного компилятора. чтобы увидеть, какие из этих функций в настоящее время поддерживаются:

Несколько функций, которые обсуждались для C ++ 11, были перенесены на следующую итерацию.


c++14

C ++ 14 - это небольшое расширение C ++ 11. Он был утвержден в августе 2014 года и выпущен в декабре того же года. Ранее назывался C ++ 1y, поскольку год утверждения был неопределенным. Многие популярные компиляторы уже имеют некоторый уровень поддержки C ++ 14.


c++1z

C ++ 17 добавляет еще несколько основных функций (и несколько второстепенных). Обычно его называют C ++ 1z или C ++ 17, поскольку техническая работа над новым стандартом была завершена в марте 2017 года. Проект стандарта был утвержден (единогласно) ISOв сентябре 2017 года и официально опубликованныев декабре 2017 года.


C ++ 20

В феврале 2020 года комитет по стандарту C ++ завершил работу над C ++ 20. Позднее в том же году он был единогласно одобрен и официально опубликован в декабре 2020 года.

Следующие (и более) новые функции уже приняты в C ++ 20:


c++23

Следующие (и другие) новые функции уже включены в черновик C ++ 23:


Онлайн-компиляторы

Если вы хотите попробовать C ++, попробуйте один из следующих онлайн-сервисов компилятора:

  • Coliru(GCC, Clang)
  • ideone.com(GCC, Clang)
  • codepad(GCC)
  • rextester(GCC, Clang, Visual C ++)
  • repl.it(GCC)
  • ELLCC(Clang)
  • CodingGround(GCC)
  • Оболочка C ++(GCC)
  • Wandbox(GCC, Clang)
  • Compiler Explorer(GCC, Clang, ICC, Visual C ++). Многие версии GCC / Clang для x86, а также для некоторых архитектур, отличных от x86 (ARM, ARM64, PPC и AVR), а также последние версии Microsoft Visual C ++. Помимо выполнения (кнопка ./a.out), он включает красиво отформатированный вывод на ассемблере, даже при необходимости выделяя цветом исходные строки и строки ассемблера, чтобы помочь найти, какая строка исходного кода соответствует какой строке ассемблера.
  • C ++ Insights(Clang) Транс-компилятор кода, который показывает код C ++ 98, который отображается на современные конструкции
  • Quick Bench(GCC, Clang) Микро-инструмент для сравнительного анализа, предназначенный для быстрого и простого сравнения производительности фрагментов кода.


FAQ по стеку в C ++


Внешние часто задаваемые вопросы


Другие внешние ресурсы


Чаты