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

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

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


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

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

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

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

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


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

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

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

Мнения OP «Либо 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 году новый стандарт C ++ 11 (ранее известный как C ++ 0x) был опубликован в ISO/IEC 14882: 2011. Вместо подхода «большого взрыва» он развертывается постепенно, поскольку компиляторы поддерживают новые языковые функции. См. часто задаваемые вопросы Бьярна Страуструпа по C ++ 11, чтобы узнать, что нового в языке, и просмотреть часто задаваемые вопросы о вашем собственном компиляторе. какие из этих функций в настоящее время поддерживаются:

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


c++14

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


c++17

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)
  • кодовая панель(GCC)
  • rextester(GCC, Clang, Visual C ++)
  • repl.it(GCC)
  • ELLCC(Clang)
  • CodingGround(GCC)
  • Оболочка C ++(GCC)
  • Wandbox(GCC, Clang)
  • Обозреватель компиляторов(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) Микро-инструмент тестирования, предназначенный для быстрого и простого сравнения производительности фрагментов кода.


c++-faqпо C ++ от Stack Overflow


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


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


Чаты