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

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

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


Новый для С++?

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

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

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

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


С++ 11

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

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


С++ 14

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


С++ 17

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


С++ 20

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

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

  • трехстороннее сравнение с использованием нового оператора <=>
  • назначенные инициализаторы (на основе функции C99 с несколькими ограничениями)
  • список параметров шаблона в лямбда-выражениях
  • дополнительная переменная с циклом for на основе диапазона
  • Расширения пакетов в лямбда-init-capture

В настоящее время рассматривается ряд новых функций, включая:


Компиляторы онлайн

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

  • Coliru (GCC, Clang)
  • ideone.com (GCC, Clang)
  • codepad (GCC)
  • rextester (GCC, Clang, Visual С++)
  • repl.it (GCC)
  • ELLCC (Clang)
  • CodingGround (GCC)
  • С++ Shell (GCC)
  • Wandbox (GCC, Clang)
  • Godbolt Explorer (GCC, Clang, ICC, Visual С++). Многие версии GCC/Clang для x86, а также для некоторых арка не-x86 (arm, arm64, ppc, avr), а также последние версии Microsoft Visual С++. Включает в себя хорошо отформатированный ассемблерный выход, даже при необходимости выделяя цветные источники и линии ассемблера, чтобы помочь найти, какая строка исходного кода сопоставляется с ассемблерной линией.

У вас есть вопрос?

Когда вы задаете вопрос, обязательно включайте любой соответствующий исходный код. Постарайтесь сохранить код как можно более минимальным, сохраняя при этом возможность воспроизвести проблему. Часто проблема будет обнаружена в процессе создания этого образца кода. Постарайтесь убедиться, что исходный код скомпилирован, если это возможно. Однако, если есть ошибки компилятора, обязательно укажите:

  • какой компилятор вы используете, включая его версию;
  • точно, что такое ошибки (точное сообщение ошибки, предпочтительно вырезать и вставлять напрямую, а не перепечатывать); и
  • на каких строках они встречаются (отметьте эти строки комментариями)

Что НЕ спросить


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


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


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


Чат-комнаты