5:11 - классы значения 7:40 - базовые классы 29:30 - member-functions 38:40 - обязательные члены-функции класса 44:00 - список инициализации 54:35 - конструкторы 56:55 - деструкторы 01:00:02 - конструктор копирования, оператор присваивания 01:02:05 - swap trick 01:15:55 - RAII 01:22:24 - преобразование типов 01:22:30 - статические поля 01:31:42 - const member functions 01:40:50 - время жизни объектов
@konstantine34663 жыл бұрын
Посмотрел несколько лекций, заметил интересный феномен. Не первый раз уже. Когда лектор рисует без вводных весьма сложный материал, публика кивает, что все понятно и вопросов не задает, а когда разжевывает довольно простой, то в лучшем случае - "вопросы по определениям", а так в основном все тупят. Забавно.
@igor_by2 жыл бұрын
Видимо в сложных случаях нет полного понимания, о чем речь и вопросы трудно фомулировать. В простых случаях есть понимание, о чем речь и появляется желание что-то спросить по теме.
@roman_roman_roman Жыл бұрын
1:08:54 - "вы знаете что такое рэбэрэбэр дебаггинг?" Выпал 🤣
@AnatoliiSviridenkov5 жыл бұрын
На слайде про swap trick, время 1:12:05 есть небольшой недочет. Между строкой 6 и 7 надо поставить data_ = nullptr; Иначе при возникновении исключения в строке 7 в деструкторе будет попытка второй раз удалить data_.
@ИванСимонов-в6в Жыл бұрын
На счет union: когда-то слышал, что он, вроде как, вообще-то, не обязан располагать все значения по одному адресу. Поэтому использовать его как reinterpret_cast в общем виде не совсем корректно. Хотя и может работать, но не обязано.
@antonmerkulov48123 жыл бұрын
Цикл лекций очень нравится, единственное - возможно следует поменять хронологию, то есть сначала рассказать о виртуальных функциях, а потом уже о классах
@АнарОтеллов2 жыл бұрын
"Наследуюсь Derived от Base не чтобы использовать через интерфейс, а чтобы получить функциональность", "так лучше не делать", "переубедите коллег" - и не объяснил, почему. Что за подход такой? Нет времени объяснять, не делайте так.
@nekosora60365 жыл бұрын
Если поле класса имеет примитивный тип (например int или int*), то значение этого поля никак не будет проинициализировано по умолчанию. Тогда какой смысл инициализировать его в списке инициализации конструктора? Точно так же можно проинициализировать его в теле конструктора. Единственный плюс - стилистический: всё инициализируется в одном месте.
@raidenluikang55324 жыл бұрын
kzbin.info/www/bejne/g2aWnX2imKuCkLM line 17: "cannot open file" + name -- не компилируется, потому , что тип `name` - const char* , и его нельзя складывать с строковой литерал. ---- kzbin.info/www/bejne/g2aWnX2imKuCkLM Очень интересная ситуация с std::variantv ; если его инициализируетс строковой литералом, например std::variantv("Hello world"); -- инициализируется как bool ^). Но это будет исправлен в С++20, если не ошибаюсь.
@ВалераФёдоров-э3ъ Жыл бұрын
Лектор на первой минуте лекции, ни слова ещё не сказав по теме классов в с++: - Кто мне скажет, зачем нужны классы?
@product42874 жыл бұрын
Складывается впечатление, что лектор имеет цель не научить, а запутать)) "а если вы не поняли - я не виноват.. я старался" ))
@product42874 жыл бұрын
@@LOL-nq3ky Лекторов действительно очень много.. разных, всяких. Но настоящих учителей на пальцах можно пересчесть. Что же касается "самостоятельного понимания" - это хорошая отмазка любому посредственному лектору))
@konstantine34663 жыл бұрын
Есть такое дело. Последовательность изложения спорная.