Перейти к содержимому

Расширенные основы программирования

ВАЖНО!

Эта тема нужна только тем, кто хочет пользоваться стандартными контейнерами (std::vector, std::unordered_map) и std::string, а также тем, кому её явно поручили изучить или кто просто хочет узнать больше.

Эта тема расширяет предыдущую тему основ программирования: в ней разбираются RAII, семантика перемещения, некоторые элементы ООП и другие возможности C++.

Рассматриваемые понятия:

  • Ссылки (&)
  • Методы, this
  • Статические (static) члены класса
  • Области видимости, деструкторы
  • Владение памятью — идея RAII
  • std::unique_ptr и std::shared_ptr
  • Собственная реализация std::vector с RAII
  • Константные (const) параметры и методы
  • Конструкторы, конструкторы копирования
  • lvalues и rvalues
  • Семантика перемещения (rvalue-ссылки &&, std::move, конструкторы перемещения)
  • Основы шаблонов
  • Строки: C-строки, std::string, std::string_view
  • Указатели на функции, typedef, auto, decltype
  • Хранение данных вместе с функциями для реализации делегатов, std::function