"54.235.4.196 - 54.235.4.196"

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

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

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


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

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

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

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

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


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

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

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

Использование и вместе

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++ 11

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

Несколько функций, которые обсуждались для 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

Начата работа над изменениями стандарта для C++ 2a или C++ 20 с ожидаемой датой 2020 года для выпуска стандарта.

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


Интернет-компиляторы

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

  • Coliru (GCC, Clang)
  • ideone.com (GCC, Clang)
  • кодовая панель (GCC)
  • ректестер (GCC, Clang, Visual C++)
  • repl.it (GCC)
  • ELLCC (лязг)
  • CodingGround (GCC)
  • C++ Shell (GCC)
  • Wandbox (GCC, Clang)
  • Godbolt Explorer (GCC, Clang, ICC, Visual C++). Многие версии GCC/Clang для x86, а также для некоторых не x86-архитектур (ARM, ARM64, PPC и AVR), а также последние версии Microsoft Visual C++. Включает в себя красиво отформатированный вывод ассемблера, даже опционально подсвечивающие цветом исходные и ассемблерные линии, чтобы помочь найти, какие исходные линии отображаются на какую сборочную линию.


Переполнение стека C++ FAQ


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


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


Чаты