Лекция 15. Const, mutable, static и explicit в методах классов

Поділитися
Вставка
  • Опубліковано 7 вер 2024

КОМЕНТАРІ • 13

  • @Xaptmah19
    @Xaptmah19 10 місяців тому +5

    Кайф

  • @user-hl3ne1pz7f
    @user-hl3ne1pz7f 10 місяців тому +9

    Это сатир?

  • @ISXOD
    @ISXOD 4 місяці тому

    48:30 Подскажите, пожалуйста, зачем конструктору копирования и оператору присваивания быть приватными методами класса, ведь, delete и так запрещает их использование или так по код стайлу правильнее?
    P. S. Спасибо, за такие замечательные лекции!

  • @nicholasspezza9449
    @nicholasspezza9449 Місяць тому

    Получается, что создание собственного литерала довольно дорогое удовольствие, т.к. сначала будет создан объект из этого литерала, а потом будет вызываться конструктор копирования: My x = 12_my;
    А затем еще и деструктор для 12_my.

    • @warpjump998
      @warpjump998 Місяць тому +2

      Это верно, если компилировать со стандартами, раньше чем C++17, и с флагом компиляции -fno-elide-constructors (этот флаг явно запрещает компилятору делать оптимизации промежуточных объектов, явно не прописанные в стандарте). Создалось бы аж целых три объекта, да. Если не включать этот флаг, компиляторы это и так умели оптимизировать. Начиная с C++17 это случай гарантированного нам стандартом RVO, так что полюбому (даже с этим флагом) будет только один объект создаваться сразу на нужном месте.

    • @nicholasspezza9449
      @nicholasspezza9449 Місяць тому +2

      Спасибо большое за ответ.

  • @bkWorm-gx2pi
    @bkWorm-gx2pi 4 місяці тому

    Почему нельзя написать Singletoon::ptr = nulltptr? Зачем Singleton* перед ставится

    • @user-nn7iq8jt1f
      @user-nn7iq8jt1f 4 місяці тому

      потому что такой тип переменной ptr в struct Singleton

    • @bkWorm-gx2pi
      @bkWorm-gx2pi 4 місяці тому

      @@user-nn7iq8jt1f Но разве это не просто присваивании полю? Или это инициализация полей статических вне класса? 56:09 ​@user-nn7iq8jt1f

    • @nicholasspezza9449
      @nicholasspezza9449 Місяць тому

      это не присваивание, это его инициализация, поэтому нужно писать тип переменной. В классе написано было его объявление.

  • @Sergey-mq3ol
    @Sergey-mq3ol 7 місяців тому

    Чел иди лечись, который чихает и кашляет всю лекцию. Заражаешь меня через монитор

    • @nicholasspezza9449
      @nicholasspezza9449 6 місяців тому +7

      у вас не только пространственные, но и временные рамки не совпадают на пару месяцев. А вообще хороший тон - смотреть лекцию в СИЗе, тогда все опасения будут сведены к минимуму.