Об этом учебнике.

Введение

Перед вами учебник по основам языка C++. При его создании мы вдохновлялись специализацией «Искусство разработки на современном C++» на «Курсере», созданной при поддержке Яндекса, и курсом «Основы и методология программирования», который читался в 2014–2021 годах на факультете компьютерных наук ВШЭ.

Языку C++ почти 40 лет, но он по-прежнему очень актуален и востребован. Он оказал огромное влияние на индустрию и на другие языки. C++ был разработан Бьярне Страуструпом в начале 1980-х годов как расширение языка C (и даже изначально назывался «Си с классами»).

Однако для изучения C++ совсем не обязательно знать C. Тем не менее мы предполагаем, что вы знакомы с основами информатики и владеете каким-либо языком программирования на уровне школьной программы — например, языком Python.

Впрочем, C++ во многом полностью противоположен Python:

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

Чтобы исходный код программы на C++ превратился в исполняемый файл для конкретной архитектуры процессора, программу нужно скомпилировать. Существует несколько популярных компиляторов C++:

Мы будем использовать в примерах и при проверке задач компилятор Clang 16-й версии.

Подробнее

При проверке задач мы используем следующие ключи компилятора:

clang++ --std=c++20 -O3 -fsanitize=address,undefined -Wall -Wextra -Werror

С 1998 года международный комитет по стандартизации C++ выпускает стандарты — версии языка, в которых описываются его возможности. В первую очередь это руководства для создателей компиляторов, но при возникновении спорных моментов всегда полезно обратиться к стандарту. Мы будем ориентироваться на стандарт C++20, а по ссылке можно ознакомиться с черновиком будущего стандарта. Важно понимать, что стандарт определяет лишь общие требования и не фиксирует детали реализации, которые в разных компиляторах могут отличаться.

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

При изучении вам будут полезны следующие англоязычные ресурсы:

  • cppreference.com — онлайн-документация по C++;
  • isocpp.org — сайт Standard C++ Foundation;
  • C++ Core Guidelines — гайдлайны по C++ от Бьярне Страуструпа и Герба Саттера;
  • godbolt.org — Compiler Explorer, онлайн-компилятор;
  • learncpp.com — современный учебник по C++;
  • hacking C++ — наглядный справочник по C++ с картинками и инфографикой.

В тексте мы будем часто ссылаться на англоязычную версию cppreference.com и на английскую «Википедию».

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

Примеры IDE:

Мы рассчитываем, что вы сможете самостоятельно разобраться с настройкой и использованием среды разработки, и не будем заострять на этом внимание. В наших примерах мы будем запускать компилятор из консоли.

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

Ho прежде чем мы двинемся дальше — небольшое объявление: для этого хендбука у нас есть коммьюнити студентов. В нём можно найти единомышленников, обсудить материалы и задания. Вступить в него можно по ссылке. А чтобы быть в курсе обновлений хендбука — советуем подписаться на рассылку.

Отмечайте параграфы как прочитанные чтобы видеть свой прогресс обучения

Вступайте в сообщество хендбука

Здесь можно найти единомышленников, экспертов и просто интересных собеседников. А ещё — получить помощь или поделиться знаниями.
Вступить
Сообщить об ошибке
Следующий параграф2.1. Первые шаги

В этом параграфе мы напишем первую программу на C++ и научимся печатать и считывать с клавиатуры строки и числа.

Следующий параграф2.2. Типы данных

Здесь мы познакомимся с некоторыми базовыми типами данных и с понятием области видимости переменных.