Мещерин Илья
Мещерин Илья
  • 61
  • 257 975

วีดีโอ

Лекция 60. Constant expressions. Constexpr, consteval, std::is_constant_evaluated
มุมมอง 1.7K4 หลายเดือนก่อน
Лекция 60. Constant expressions. Constexpr, consteval, std::is_constant_evaluated
Лекция 59. std::launder. Strict aliasing. Constexpr переменные и функции
มุมมอง 1.5K4 หลายเดือนก่อน
Лекция 59. std::launder. Strict aliasing. Constexpr переменные и функции
Лекция 58. Внутреннее устройство std::variant и std::visit
มุมมอง 1.3K4 หลายเดือนก่อน
Лекция 58. Внутреннее устройство std::variant и std::visit
Лекция 57. Unions, std::variant, std::visit. Overload pattern
มุมมอง 1.4K4 หลายเดือนก่อน
Лекция 57. Unions, std::variant, std::visit. Overload pattern
Лекция 56. Проблемы std::function. std::bind, std::reference_wrapper
มุมมอง 1.5K4 หลายเดือนก่อน
Лекция 56. Проблемы std::function. std::bind, std::reference_wrapper
Лекция 55. std::function и ее реализация. std::invoke
มุมมอง 3K5 หลายเดือนก่อน
Лекция 55. std::function и ее реализация. std::invoke
Лекция 54. Объекты замыканий. Обобщенные лямбды. Рекурсивные лямбды.
มุมมอง 1.9K5 หลายเดือนก่อน
Лекция 54. Объекты замыканий. Обобщенные лямбды. Рекурсивные лямбды.
Лекция 53. Лямбда-функции. Списки захвата. Замыкания
มุมมอง 2.2K6 หลายเดือนก่อน
Лекция 53. Лямбда-функции. Списки захвата. Замыкания
Лекция 52. Концепты (окончание). Лямбда-функции (начало)
มุมมอง 1.4K6 หลายเดือนก่อน
Лекция 52. Концепты (окончание). Лямбда-функции (начало)
Лекция 51. Requires-выражения. Концепты
มุมมอง 1.5K6 หลายเดือนก่อน
Лекция 51. Requires-выражения. Концепты
Лекция 50. SFINAE-friendliness. Constraints and requirements
มุมมอง 1.6K6 หลายเดือนก่อน
Лекция 50. SFINAE-friendliness. Constraints and requirements
Лекция 49. Реализация type_traits с помощью SFINAE
มุมมอง 1.6K6 หลายเดือนก่อน
Лекция 49. Реализация type_traits с помощью SFINAE
Лекция 48. SFINAE, std::enable_if
มุมมอง 2.1K6 หลายเดือนก่อน
Лекция 48. SFINAE, std::enable_if
Лекция 47. Type erasure, std::any. Окончание реализации shared_ptr
มุมมอง 2.5K6 หลายเดือนก่อน
Лекция 47. Type erasure, std::any. Окончание реализации shared_ptr
Лекция 46. Внутреннее устройство shared_ptr и weak_ptr
มุมมอง 3.4K6 หลายเดือนก่อน
Лекция 46. Внутреннее устройство shared_ptr и weak_ptr
Лекция 45. Tuple, идея реализации. Функции для работы с tuple
มุมมอง 2.1K7 หลายเดือนก่อน
Лекция 45. Tuple, идея реализации. Функции для работы с tuple
Лекция 44. Deducing this. CTAD. Structured bindings, tuples
มุมมอง 2.3K7 หลายเดือนก่อน
Лекция 44. Deducing this. CTAD. Structured bindings, tuples
Лекция 43. Вывод типов auto, decltype, decltype(auto)
มุมมอง 2.9K7 หลายเดือนก่อน
Лекция 43. Вывод типов auto, decltype, decltype(auto)
Лекция 42. Expired values. Copy elision. Return value optimization
มุมมอง 2.2K7 หลายเดือนก่อน
Лекция 42. Expired values. Copy elision. Return value optimization
Лекция 41. Реализация std::move и std::forward. Реализация push_back с move-семантикой
มุมมอง 2.8K7 หลายเดือนก่อน
Лекция 41. Реализация std::move и std::forward. Реализация push_back с move-семантикой
Лекция 40. Ссылочные квалификаторы. Универсальные ссылки. Функция std::forward
มุมมอง 3K7 หลายเดือนก่อน
Лекция 40. Ссылочные квалификаторы. Универсальные ссылки. Функция std::forward
Лекция 39. Функция std::move. Определения lvalue и rvalue. Rvalue-ссылки
มุมมอง 3.3K7 หลายเดือนก่อน
Лекция 39. Функция std::move. Определения lvalue и rvalue. Rvalue-ссылки
Лекция 38. Scoped allocators. Атрибуты. Move-семантика (начало)
มุมมอง 2.9K8 หลายเดือนก่อน
Лекция 38. Scoped allocators. Атрибуты. Move-семантика (начало)
Лекция 37. Разновидности и реализация operator new. Выравнивания. Битовые поля
มุมมอง 2.2K8 หลายเดือนก่อน
Лекция 37. Разновидности и реализация operator new. Выравнивания. Битовые поля
Лекция 36. Allocator-aware контейнеры. Перегрузка new и delete
มุมมอง 2.7K8 หลายเดือนก่อน
Лекция 36. Allocator-aware контейнеры. Перегрузка new и delete
Лекция 35. Аллокаторы, allocator_traits
มุมมอง 3.9K8 หลายเดือนก่อน
Лекция 35. Аллокаторы, allocator_traits
Лекция 34. Внутреннее устройство std::unordered_map
มุมมอง 2.3K8 หลายเดือนก่อน
Лекция 34. Внутреннее устройство std::unordered_map
Лекция 33. Потоковые итераторы. Манипуляторы над потоками
มุมมอง 2.1K8 หลายเดือนก่อน
Лекция 33. Потоковые итераторы. Манипуляторы над потоками
Лекция 32. Внутреннее устройство std::list и std::map
มุมมอง 3.9K8 หลายเดือนก่อน
Лекция 32. Внутреннее устройство std::list и std::map

ความคิดเห็น

  • @Snick3rSdoto
    @Snick3rSdoto 3 ชั่วโมงที่ผ่านมา

    кто-то знает какой плагин выводит так информацию? 1:00:37

  • @НиколайПавлович-н4ф
    @НиколайПавлович-н4ф 4 วันที่ผ่านมา

    Хочу дополнить рассказ одной ситуацией, с которой я сам столкнулся и которую Илья не проговаривает (или проговаривает, но я не заметил): При ромбовидном наследовании с использованием виртуального наследования в конструкторе класса Son нужно писать не два, а три делегирующих конструктора: бабушки, мамы и папы. Что вообще происходит, удобно показать на примере: struct A { A() = delete; A(const std::string& str) : a(1) { std::cout << "A() in " << str << ' '; } int a; }; struct B : virtual A { B() = delete; B(int) : A("B()"), b(2) { std::cout << "B() "; a = 2; } int b; }; struct C : virtual A { C() = delete; C(int) : A("C()"), c(3) { std::cout << "C() "; a = 3; } int c; }; struct D : B, C { D() = delete; D(int) : A("D()"), B(0), C(0), d(4) { std::cout << "D() "; } int d; }; int main() { D dd(0); std::cout << dd.a; } Вывод этой программы будет:""" A() in D() B() C() D() 3""" Общее правило такое: при вызове конструктора объекта, который находится в иерархии с виртуальным наследованием, каждый предок инициализируется только один раз при первой возможности. В соответствие с этим правилом, сначала вызывается конструктор А в списке инициализации D, потом вызывается конструктор B, и в его списке инициализации повторная инициализация А не происходит, но выполняется код в фигурных скобках, и в поле а записывается значение 2. Потом, думаю, понятно. Больше того, как я понял, если к какому-то предку нет пути, по которому встречается виртуальное наследование, то наследника нельзя будет создать, просто проинициализировав поля всех предков, надо именно вызывать делегирующие конструкторы, иначе компилятор выдает ошибку, что у наследника нет таких-то полей.

    • @НиколайПавлович-н4ф
      @НиколайПавлович-н4ф 4 วันที่ผ่านมา

      *если к какому-то предку нет пути, по которому НЕ встречается виртуальное наследование

  • @VoiCedml
    @VoiCedml 11 วันที่ผ่านมา

    Илья, привет, спасибо за отличный курс лекций. Скажи, пожалуйста, почему убрал их из общего доступа? Планируешь ли восстановить доступ или его можно получить? Курс лекций за последний год был очень хорош на твоем канале. Так как не знаю, как с тобой связаться, пишу через комментарии :)

  • @antonbaltser850
    @antonbaltser850 17 วันที่ผ่านมา

    Илья говорит про использование template + vector<T>::iterator. Не понял, данный пример, данный тип инициализируется без CE. Поясните пожалуйста, что я упустил. Спасибо. Нашел: template <typename T> void print_vector(std::vector<T>& vec) { // typename is needed here because 'iterator' depends on T (which is a template parameter) typename std::vector<T>::iterator it; for (it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << " "; } std::cout << std::endl; }

    • @setanoier
      @setanoier 13 วันที่ผ่านมา

      привет! а у тебя осталась ссылка где-то на плейлист? просто, как я понял, Илья скрыл видео, а я так и остался на 30 лекции.. вот по старым ссылкам и хожу из истории =(

  • @puj201
    @puj201 19 วันที่ผ่านมา

    а куда вдруг весь плейлист подевался? (эх, а я только приближаться к концу стал...)

  • @hostpost9752
    @hostpost9752 20 วันที่ผ่านมา

    Подскажите можно ли реализовать функцию print с помощью синтаксиса fold expression, вместе с отступами << ' ' ?

    • @ddruip
      @ddruip 16 วันที่ผ่านมา

      Можно через такой синтаксис ( pack op ... ) и бинарный оператор запятая template <typename... Types> void print(const Types&... types) { ((std::cout << types << ' '), ...); }

    • @hostpost9752
      @hostpost9752 14 วันที่ผ่านมา

      @@ddruip 😮😮😮спасибо

  • @НикитаБахарев-ц8л
    @НикитаБахарев-ц8л 22 วันที่ผ่านมา

    В лекции ошибка. В ControlBlock на самом деле лежит не T, а T*. При вызове std::make_shared мы действительно делаем одну аллокацию сразу под shared_ptr и под T. Таким образом, мы экономим аллокацию + ещё выигрываем в скорости из-за cache локальности

    • @mesyarik
      @mesyarik 22 วันที่ผ่านมา

      @@НикитаБахарев-ц8л "под shared_ptr и под T" - имеешь в виду под control block и под T? А в чем профит хранить в контрол блоке указатель, а не сам T?

    • @НикитаБахарев-ц8л
      @НикитаБахарев-ц8л 22 วันที่ผ่านมา

      ​@@mesyarik 1. - имеешь в виду под control block и под T? - да 2. - А в чем профит хранить в контрол блоке указатель, а не сам T? - T* хранится и в shared_ptr, и в ControlBlock (таким образом, мы делаем одно разыменование, если хотим получить T). Это нужно, чтобы корректно delete'ить объекты с множественным наследованием без виртуальных деструкторов. есть подробно на youtube: CppCon 2019: Arthur O'Dwyer “Back to Basics: Smart Pointers” а узнал я про это на одном из собесов)

  • @TEDERIs
    @TEDERIs 27 วันที่ผ่านมา

    Досадно, что плейлист исчез. В любом случае, спасибо за интересные лекции.

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

    00:00 7.6 Exception safety 02:00 виды exception safety 11:20 noexpect, не бросаем исключения из самой функции 23:10 VIII Containers and iterators. 8.1 std::vector implementation 25:55 реализация push_back() 27:20 реализация reserve() 40:00 placement new 55:30 std::vector<bool> как контр пример

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

    А почему на канале все видео пропали? У меня как раз в универе скоро будет c++, и очень хотелось бы пересмотреть ваши лекции.

    • @Daniel-xf3cw
      @Daniel-xf3cw 25 วันที่ผ่านมา

      Теперь они доступны только по ссылке

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

    Ну куда вы лекции скрыли :(

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

    00:00 Почему падают программы, структурная схема 06:30 7.3 Exception handling 11:50 бросаем исключение по значению 13:30 бросаем исключение по ссылке 24:00 бросаем throw из catch 24:35 вложенный try 30:50 ремарка про std::endl, о том, что он очищает буфер вывода 32:00 7.3 Multiple catch 34:00 правила преобразования типов при throw и catch 36:15 примеры с наследованием 42:30 7.4 Resource acquisition is initialization 50:00 пример smart pointer 54:15 реализация unique_ptr 1:00:00 7.5 Exceptions in constructors 1:12:35 function-try block, работает для любой функции и конструктора 1:19:30 нельзя бросать исключения из деструктора 1:23:20 std::uncaught_exceptions проверка летит ли исключение 1:24:30 про несколько исключений одновременно в runtime

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

    00:00 6.9 Fold expressions since c++17 11:20 6.10 CRTP(Curiously recurring template pattern) 13:00 пример из вики как неочевидно использовать шаблоны 21:30 expression templates 30:40 7 Exceptions 32:00 7.1 Idea of exceptions, basic examples 39:50 throw 42:00 try, catch 51:30 new бросает std::bad_alloc 52:30 std::terminate 59:30 7.2 Difference between exceptions and runtime errors 1:08:10 иерархия стандартных исключений

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

    не нормально, а идеально шикарно!!!!

  • @14og83
    @14og83 หลายเดือนก่อน

    Спасибо за лекции! Friend class Vector в итераторе не нужен разве? Если конструктор от указателя приватный, мы его не можем использовать внутри класса вектора

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

    Лекции прошлых годов вернут на канал?

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

    На C# есть ref struct, которые на стеке выделяются, которые могут вести себя как неуправлямые ресурсы, их ГК не трогает. Также unsafe код с указателями имеет fixed, который закрепляет указатель и его также не трогает ГК.

  • @ВасяИванов-д7ш
    @ВасяИванов-д7ш หลายเดือนก่อน

    Не принято в современном мире называть родителей по номерам. Это раздутая из ничего чушь. Раздутая из какой-то формальной бумажки в одной стране. Одному деду кто-то это сказал, дед сам интернетом пользоваться не умеет, и начал повторять это везде.

  • @andreevgerman1298
    @andreevgerman1298 2 หลายเดือนก่อน

    А где взять задачи которые вы даете студентам?

  • @НикитаБахарев-ц8л
    @НикитаБахарев-ц8л 2 หลายเดือนก่อน

    концовка - просто ахуеть

  • @morskaya_svinka
    @morskaya_svinka 2 หลายเดือนก่อน

    В последнем примере msvc cpp14 вывел 106 85 54 32, а cpp17 вывел 21 52 74 106.

  • @NN-xq2np
    @NN-xq2np 2 หลายเดือนก่อน

    Где vptr у сына? Или его хранят только прямые предки, и все обращения к полям и методам бабушки проходят через них?

  • @BlackSoul57
    @BlackSoul57 2 หลายเดือนก่อน

    А разве одиночных логических операторов нет, которые гарантируют, что оба выражения вычисляться и сравняться? Которые "побитовые" в контексте булей.

  • @NN-xq2np
    @NN-xq2np 2 หลายเดือนก่อน

    1:11:13 Стандартная конверсия же предпочтительнее пользовательской? Тогда по такой логике должна быть не CE, а 2, хоть на самом деле 1, ведь сама логика не верна.

  • @petrkiyashko4248
    @petrkiyashko4248 2 หลายเดือนก่อน

    Уб с интом и ll прежде всего потому, что есть little и big endian архитектуры, и при касте указателя интовый может на одном компе указывать на младшие разряды, а на другом -- на старшие

  • @arturkoritko2663
    @arturkoritko2663 2 หลายเดือนก่อน

    Оставлю этот комментарий для таких же "Окошников" как и я, короче, если вы любите все проверять своими ручками и не понимаете, почему ничего не получается, знайте, вижловский компилятор, по каким-то не ведомым причинам, считает себя самым хитрым и умным, и раздувает из мухи слона там, где это не надо, поэтому при множественном наследовании размеры класса sizeof(Son) с иерархией: Бабушка, от нее виртуально мама, папа, от них сын, у каждого виртуальный метод и целочисленное поле, из 48байт превращаются в 72

  • @Hettikus
    @Hettikus 2 หลายเดือนก่อน

    Это было прекрасно, спасибо. Булевый вектор отдельно взрывает мозг. То есть по факту мы создали временный объект, который лежит там же, где наш массив данных, поправили что-то и забыли. А массив поменялся!

  • @BlackSoul57
    @BlackSoul57 2 หลายเดือนก่อน

    Прогаю около 10 лет, в т.ч. 4 года профессионально на C#, VBA, JS, TSQL, Python, писал немного на Java, Scala, Fortran, ASM, C. Послушать все равно интересно, кучу всего из плюсов на виртуальные машины языков переместили уже.

  • @MrKwoork
    @MrKwoork 2 หลายเดือนก่อน

    00:00 6.6 Dependent names (зависимые имена) 09:33 применение typename 14:55 шаблонный тип в шаблоне 29:30 понятие Two phase translation 33:23 6.7 Metafunctions and type traits 33:30 метафункция is_same 43:00 метафункция remove_reference 45:30 метафункция remove_const 48:50 про <type_traits> 57:30 std::conditional 1:03:30 6.8 variadic templates 1:06:07 вариадический print на шаблоне 1:11:00 пример, is_homogeneous, проверяет все ли типы в функции одинаковые 1:19:00 оператор sizeof…()

  • @yswik
    @yswik 2 หลายเดือนก่อน

    какие душные ребята там сидят, ужас

  • @nicholasspezza9449
    @nicholasspezza9449 2 หลายเดือนก่อน

    Кто-нибудь объясните пожалуйста почему в 26:17 в переопределенном операторе +, в месте, где возвращается объект VecSum, мы этот объект формируем разыменовывая указатели, полученные из статик каста? Почему мы не делаем статик каст к константной ссылке?

  • @mihail8159
    @mihail8159 2 หลายเดือนก่อน

    Спасибо большое, побольше таких видео ❤❤❤❤❤

  • @MrKwoork
    @MrKwoork 2 หลายเดือนก่อน

    00:00 6.3 template specialization 06:05 про перегрузку и шаблоны 13:10 снова про порядок перегрузки 16:30 6.4 non-type template parameters 23:00 пример использования числовых параметров шаблона 28:15 числовые параметры у классов 31:00 constexpr 34:00 tempate template parameters, шаблонные аргументы которые шаблоны 54:00 6.5 basic compile time cumputations 55:00 пример с числом Фибоначчи 1:02:26 проверка числа на простоту 1:08:35 шаблонные переменные 1:09:35 static_assert

  • @kondius
    @kondius 2 หลายเดือนก่อน

    1:19:58 В конструкторе копирования несколько ошибок.

  • @morskaya_svinka
    @morskaya_svinka 2 หลายเดือนก่อน

    21:46 std::shared_ptr<int> p(new int(5)); auto p2 = p; p2 = new int(8); Так незя, no operator "=" matches these operands

  • @gooldenboy666
    @gooldenboy666 2 หลายเดือนก่อน

    Почему в shared_ptr, отстуствует кастомный Deleter?

  • @evgeniyffp
    @evgeniyffp 2 หลายเดือนก่อน

    спасибо за лекции

  • @morskaya_svinka
    @morskaya_svinka 2 หลายเดือนก่อน

    Где-то на 1:03:00 поставил на паузу - проверить, какие конструкторы вызовутся, если у возвращаемой локальной переменной прописать и не прописать move. Получил S(S&&), думал, ходил, размышлял о жизни...

  • @Serch_404
    @Serch_404 2 หลายเดือนก่อน

    Здравствуйте. Очень класный курс лекций!!! Смотрю, и наслождаюсь от понимания) автору огромное спасибо! Илья, Я слышал, что вы раздумываете по поводу следующих курсов видеолекций и выбераете между: "приквылом" к этому курсу и следующей частъю этого( многопоточность, ОС и т.д.). Так вот, лично Я голосую за продолжение этого курса, а не за приквэл!) Моя логика такова: что если вы в самом первом ролике дадите литературу по которой можно освоить "базу" (Стивин Прато -Си, Андрей Столяров - Введение в професию) + другая литература. То люди с ней и сами разберуться. А вот что касается более сложных вещей, вы в этом курсе говарите про них "вам на 2ом курсе раскажут", тут без объяснений сташего и опытного товарища не обойтись... В общем! Если будете выберать, то Я за продолжение курса, а не "приквэл"! ☝️👍

    • @mesyarik
      @mesyarik 2 หลายเดือนก่อน

      @@Serch_404 продолжение уже планируется записать этой осенью))

    • @Serch_404
      @Serch_404 2 หลายเดือนก่อน

      ​@@mesyarik Это очень хорошая новость!) Ждём с нетерпением👍 И если можно, то есть одна просьба. Дайте пожалуйста, в первом или в заключительном ролике, полный список литературы, которая по вашему мнению поможет людям разобраться с материалом. Вот лично Мне, как бы не были хороши лекции, всё равно нужен хороший источник по теме. К которому Я смогу обратиться для уточнения, более детального изучения той или иной темы... В общем, если у вас есть "список литературы", то будьте так добры, поделитесь с аудиторией😅 Заранее спасибо🙏

    • @ЖеняФурман-ф8г
      @ЖеняФурман-ф8г หลายเดือนก่อน

      @@mesyarik а куда пропали первый плейлист на канале?

  • @uukratkaya
    @uukratkaya 2 หลายเดือนก่อน

    Илья, хотел бы, чтобы вы сделали курс для начинающих

    • @petrkiyashko4248
      @petrkiyashko4248 2 หลายเดือนก่อน

      Трилогия столярова "программирование: введение в профессию" до главы про плюсы включительно -> потом этот курс

    • @uukratkaya
      @uukratkaya 2 หลายเดือนก่อน

      @@petrkiyashko4248 спасибо. Я уже видел подобные комментарии, но очень сложно себя заставить что-то делать, хоть и действительно есть желание. Я смотрю на то, какая толстая эта книга и становится больно от понимания того, как много времени нужно будет потратить

  • @MrKwoork
    @MrKwoork 2 หลายเดือนก่อน

    00:00 6 Templates 6.1 Idea of templates, basics examples. 6:30 шаблонная функция 9:10 <template T> vs <class T> 11:10 шаблонный класс 12:26 шаблонный using 17:20 шаблонная переменная, С++14 без примера 19:30 порядок использования шаблонов 22:20 важный момент, шаблоны это кодогенерация 25:30 хороший вопрос, но так не работает 36:35 6.2 Templates overloading 39:00 мотивация работы перегрузки 42:40 эвристика работы компилятора при выборе перегрузки 50:10 шаблонный аргумент по умолчанию 1:08:20 про шаблонные классы 1:09:30 специализация шаблона 1:16:50 full and partial specialization

  • @Katar1x
    @Katar1x 2 หลายเดือนก่อน

    *В свое время я участвовал в олимпиадах (те самые, что придумали как замену вступительным). Призер физтеха по физике, победа на ОММО и в итоге проходил по баллам в ВШЭ, Мехмат МГУ и на ПМИ в МФТИ, так как баллы были неплохие с олимпиадами (2016й год). Я тогда хотел стать математиком, потому что я её любил в школе (как же я ошибался), а в информатике мне нравился только Паскаль, из-за чего, увидев как выглядит ЕГЭ по информатике, желание в неё углубляться у меня пропало. День Х, я иду на почту с кипой доков для отправки их в ВШЭ и поступления на ПМИ, и, не доходя до почты я передумываю. Поступаю в свой УГАТУ на ПМИ, где с самого начала нас (140 человек на потоке) сталкивают 70 лет+ преподователи с советской программой линала, матана, функана, дискреткой и другими страшными словами. В 2 предметах в семестре помимо зачета и экзамена, ставятся 2 коллоквиума, не сдав которые - нет допуска даже к зачету. И зимой нас благополучно остается 40 человек в потоке из ТРËХ групп (из 140 человек изначально). Кое-как дожив до конца 1 курса и закрыв предметы я понимаю, что математику я так-то не очень и люблю. С и С++ на первом курсе даются мне плохо, и прямо на первой лекции функана, на 3 году обучения я принимаю решение перейти на другой факультет с понимжением на 1 курс, на Прикладную Информатику (другое не было доступно), в конец потеряв какой-либо огонь учиться чему либо, главное было не потерять год жизни в казарме. Как оказалось, на ПИ нет информатики, проги и математики, там учат строить схемы бизнес процессов, для автоматизации их в дальнейшем. Прошло 4 года, я пайтон программист с годовым стажем, смотрю этот курс по плюсам для личного развития и переодически злюсь на себя за то, что в свое время сделал не самый лучший выбор вуза и потерял несколько лет на поиск и осознание того, чем на самом деле хочу заниматься в жизни.... Цените то, куда вы попали.*

  • @Юрий-ч8ш1ь
    @Юрий-ч8ш1ь 2 หลายเดือนก่อน

    Если мы используем make_shared чтобы одним махом создавать и счетчики и объект, а потом создали weak_ptr, а потом при обнулении shared_count вызвали вручную деструктор объекта, то как мы избежим вызова деструктора второй раз при удалении контрольного блока, содержащего и счетчик и объект ?

    • @warpjump998
      @warpjump998 2 หลายเดือนก่อน

      внутри контрол блока лежит не сам объект, а массив чаров размера и выравнивания как объект

  • @morskaya_svinka
    @morskaya_svinka 2 หลายเดือนก่อน

    Back_insert_iterator делается через указатель на Container, а не через ссылку, потому что ссылки нельзя присваивать. Например, std::copy_if использует какой-то метод из std, который задействует оператор присваивания it1 = it2.

  • @VengMike
    @VengMike 3 หลายเดือนก่อน

    Классные лекции, но по поводу вызовов методов класса через указатели на методы, и вообще. Очень не хватает упоминания, что в такие методы (и все нестатические методы класса) неявно передаётся первым параметром указатель на объект (будущий this). Так вот, то самое смещение, которое хранится вторым - оно применяется именно к этому указателю, не на функцию, как в озвучке, а на неявно переданный указатель объекта. А указатель на метод никуда не сдвигается - каким был, таки и остался...

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

      Привет, можешь объяснить, зачем два указателя, есть уже имеем указатель на метод, почему нельзя просто взять и вызвать его? А нужен ещё один для смещения, я вот не понимаю.

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

      @@yophosphene914 Указатель на метод не "знает" для какого объекта класса он вызван, т.е. у тебя может быть сотня объектов, но указатель на метод у них будет один. Если метод статический, то ок, а если член класса, то нужно знать для какого объекта класса оно вызвано. Для этого первым параметром всегда передаются указатель на сам объект, который внутри можно получить, используя мнемонику this.

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

      ​@@VengMike, кажется понял, спасибо большое!

  • @MrKwoork
    @MrKwoork 3 หลายเดือนก่อน

    00:00 5.6 memory layout of polymorphic objects with multiple inheritance 13:50 non virtual thunc 17:50 важная оговорка 18:30 virtual inheritance 26:00 заключение по теме 31:20 про блог shaharmike 32:50 5.7 no obvious problems with virtual functions 39:05 популярный вопрос на собесе 44:32 пример pure virtual function call 50:25 порядок создания полиморфного объекта 58:20 пример из ТОП3 кринж примеров, как работают ссылки не виртуальные методы

  • @oscar-foxtrot
    @oscar-foxtrot 3 หลายเดือนก่อน

    Супер лекции! Спасибо, что выложили

  • @petrkiyashko4248
    @petrkiyashko4248 3 หลายเดือนก่อน

    Про std endl немного неправильно то, что на линуксе как минимум ' ' флашит аутпут, только если это явно не выключить. Но это так для стандартных потоков ввода-вывода, а не для любых стримов.