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

แชร์
ฝัง
  • เผยแพร่เมื่อ 17 ม.ค. 2025

ความคิดเห็น • 7

  • @igorl9211
    @igorl9211 5 ปีที่แล้ว +7

    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 ปีที่แล้ว +1

    16:49 Похоже зря лектора сбили с панталыку, скобочки после слова template совершенно не нужны, должно быть: extern template class|struct template-name ; Как, собственно, и было изначально.

    • @СергейСергеенко-щ8д
      @СергейСергеенко-щ8д 3 ปีที่แล้ว

      Да, при наличии скобок имеет место специализация, а без них - явное инстацирование.

  • @wlepnoga
    @wlepnoga 5 ปีที่แล้ว

    Если там кто-то что-то понял с такими пояснениями, то это просто чудо

    • @romanromanoff8703
      @romanromanoff8703 8 หลายเดือนก่อน

      Не могли бы вы посоветовать в таком случае что то аналогичное но доступное?

  • @МаксГончарук-г6м
    @МаксГончарук-г6м 3 ปีที่แล้ว

    Самая сложная лекция за 1 часть 🤯