Лекция 11. Введение в шаблоны II (Программирование на C++, часть 1)

  Рет қаралды 7,765

Computer Science Center

Computer Science Center

Күн бұрын

compscicenter.ru/
Лекция № 11 в курсе "Программирование на C++, часть 1" (осень 2018).
Преподаватель курса: Валерий Михайлович Лесин

Пікірлер: 7
@igorl9211
@igorl9211 5 жыл бұрын
2:20 - специализация шаблонного класса 5:13 - частичная специализация 8:22 - общая нешаблонная база 12:00 - явное инстацирование 17:00 - специализация шаблонов функций 19:29 - curiously recurring template pattern 25:20 - typedef для шаблонов 26:35 - наследование и шаблоны. инвариантность шаблонов 30:50 - шаблонная функция в нешаблонном классе 39:45 - динамический vs статический полиморфизм 41:36 - динамический + статический полиморфизм 43:48 - немного про exceptions и smart pointers
@S0bes
@S0bes Жыл бұрын
Пожалуй напишу пояснения к слайду 9, как понял для себя. Класс point, открыто наследуется от класса comparable. Что бы приобрести интерфейс для сравнения объектов point между собой - а именно недостающие операторы =, >. Так как comparable является базовым классом для point, то инстанцировав шаблон comparable классом derived_t = point получаем возможность внутри класса comparable взять указатель this* и как указатель на базовый класс привести его через static_cast к указателю на класс наследника, получив указатель на derived_t, т.е. в нашем случае на объект point (или любой другой объект, для которого будет инстанцирован и сгенерен код шаблона comparable) Таким образом, у нас автоматически будет генерится код для операторов сравнения любого класса, который определил внутри себя operator< и унаследовал класс comparable. А сам объект point, располагаясь в памяти будет сначала иметь шапку из объекта comparable. И обращаясь к операторам сравнения =,> будет вызывать их из базового класса comparable
@sergeysergeev92
@sergeysergeev92 5 жыл бұрын
16:49 Похоже зря лектора сбили с панталыку, скобочки после слова template совершенно не нужны, должно быть: extern template class|struct template-name ; Как, собственно, и было изначально.
@СергейСергеенко-щ8д
@СергейСергеенко-щ8д 3 жыл бұрын
Да, при наличии скобок имеет место специализация, а без них - явное инстацирование.
@wlepnoga
@wlepnoga 5 жыл бұрын
Если там кто-то что-то понял с такими пояснениями, то это просто чудо
@romanromanoff8703
@romanromanoff8703 8 ай бұрын
Не могли бы вы посоветовать в таком случае что то аналогичное но доступное?
@МаксГончарук-г6м
@МаксГончарук-г6м 3 жыл бұрын
Самая сложная лекция за 1 часть 🤯
Support each other🤝
00:31
ISSEI / いっせい
Рет қаралды 81 МЛН
UFC 310 : Рахмонов VS Мачадо Гэрри
05:00
Setanta Sports UFC
Рет қаралды 1,2 МЛН
Иерархия памяти компьютера
28:51
Введение в программирование
Рет қаралды 7 М.
Лекция 6. Классы (Программирование на C++, часть 1)
1:55:52
Ruslan & Lyudmila | Animated Short Film
16:19
СКАЗ
Рет қаралды 138 М.
Учитесь умнее, а не усерднее! 5 советов  // Marty Lobdell
16:15
Support each other🤝
00:31
ISSEI / いっせい
Рет қаралды 81 МЛН