10. Семантика перемещения, статические методы и поля в C++ | ООП 2026

12+
12+

2 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

2 дня назад

ПожаловатьсяНарушение авторских прав
12+
12+

2 дня назад

Курс "Объектно-ориентированное программирование" специальность 09.03.04 "Программная инженерия", 2 курс. Про подготовку программистов в Институте iSpring здесь: https://ispring.institute/software-engineering В этой лекции разбираем две важные темы современного C++: семантику перемещения и статические члены класса. Сначала говорим о том, почему обычное копирование объектов не всегда подходит: оно может быть дорогим, приводить к созданию временных объектов и лишним копиям, а для некоторых типов — например, потоков, мьютексов или уникальных ресурсов — копирование вообще не имеет смысла. Далее подробно рассматриваем move semantics, появившуюся в C++11: — что такое lvalue и rvalue; — как работают ссылки Type& и Type&&; — как компилятор выбирает перегрузки функций для обычных, константных и временных объектов; — что на самом деле делает std::move; — когда вызываются move-конструктор и move-оператор присваивания; — в каком состоянии остаётся объект после перемещения; — как реализовать перемещение на примере собственного класса String; — чем std::exchange отличается от std::swap; — когда стоит писать move-конструктор вручную, а когда лучше следовать правилу нуля. Во второй части лекции переходим к статическим методам и данным класса. На примерах TV и Car разбираем, какие методы логически относятся не к конкретному объекту, а к классу в целом, почему такие методы стоит делать static и чем они отличаются от обычных методов. Также обсуждаем: — почему у статических методов нет указателя this; — к каким данным они могут обращаться; — что такое статические поля класса; — как хранить общие данные для всех объектов; — как определять статические поля в .cpp-файле; — как использовать inline static начиная с C++17; — где статические поля встречаются в стандартной библиотеке, например std::string::npos. Лекция поможет лучше понять, как C++ управляет ресурсами, как избежать лишнего копирования и как правильно отделять состояние конкретного объекта от логики, относящейся ко всему классу. Полезные ссылки: * Примеры кода, конспекты, практические задания по курсу ООП: https://github.com/alexey-malov/oop * Поддержать меня на Boosty: https://boosty.to/vivid-bw Тайм-коды: 0:00 Проблемы копирования объектов 4:24 Lvalue и rvalue 16:25 Перемещающий конструктор (move constructor) 36:35 Перемещающий оператор присваивания 43:55 Статические методы класса 50:45 Статические поля класса

Название:

10. Семантика перемещения, статические методы и поля в C++ | ООП 2026

Категория:

Разное