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

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

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++98 C++03 C++11 C++14 C++17 или C++20. Вопросы о повышении должны добавить тег 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++, использующий библиотеки C (например, код, использующий extern "C").

Рекомендации по редактированию и модерации сообщений с тегами c и C++:

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

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

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

Мнения OP "Либо C, либо C++ в порядке" - явный признак плохого или неясного вопроса. Ответы могут сильно отличаться в зависимости от выбранного языка. Запросить разъяснения, закрыть как неясное / слишком широкое, пока ОП не разъяснит это.

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

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


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

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


C++20

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

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


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

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

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


Часто задаваемые вопросы по C++ от stackru


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


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


Чаты