Лекции в бакалавриате МФТИ по C++ на русском языке.
В этой лекции мы углубим понимание исключений в части их влияния на проектирование классов. Кроме того мы поговорим о перегрузке операторов выделения и освобождения памяти и вообще о работе с ними.
Лектор: Константин Владимиров
Дата лекции: 29 ноября 2021 года
Съёмка: Владислав Белов.
Звук: Дмитрий Рябцев.
Предыдущая лекция:
https://youtu.be/P1LcWg6K3WE
Следующая лекция:
https://youtu.be/D6nn1PLJrzg
Слайды ко всем лекциям: https://sourceforge.net/projects/cpp-lects-rus/files/cpp-graduate
Примеры кода ко всем лекциям: https://github.com/tilir/cpp-graduate
Timeline:
00:00 В предыдущей серии
06:20 Условный noexcept
24:25 Коварное извлечение
31:30 Перегрузка new/delete
47:05 Присваивание Степанова
52:15 Буфер для вектора
1:07:40 Перемещение для push
1:14:05 Static asserts
1:18:30 Обзор литературы
Errata:
* Хелпер destroy в примерах myvec-3 и myvec-4 неверен
* На
57:30 в реализации метода push будет UB, если size==used и вставляется элемент этого же самого вектора, так как после реаллокации ссылка на вставляемый элемент будет висячей.
* На
01:09:53 В MyVector4 в методе push() есть проблема при сценарии вида v.push(v[3]) в результате чего после реаллокации объект для вставки может оказаться в непредсказуемом состоянии после перемещения.