AUTO и неопределенное поведение | Углубленное программирование на C++: (По книге Скотта Мейерса) #5

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 มิ.ย. 2024
  • Предыдущее видео: • Всегда использовать AU...
    В этом видео мы детально рассмотрим главу 2.2 книги Скотта Мейерса "Effective Modern C++", которая называется "Если auto выводит нежелательный тип, используйте явно типизированный инициализатор". Мы разберем, как избежать ошибок при использовании auto и как правильно применять явно типизированные инициализаторы для получения ожидаемых результатов.

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

  • @geniusgabe8254
    @geniusgabe8254 26 วันที่ผ่านมา +8

    Воу, чувак, среди гайдов - это лучшее. Я предпочитал всегда смотреть референсы и мануалы, сейчас попался ты и смотрю с кайфом

  • @user-do1lt6uh3e
    @user-do1lt6uh3e 7 วันที่ผ่านมา +1

    моё почтение. Впервые смотрю видео про qt с хорошим звуком, монтажом и поставленной речью.
    Еще и на русском! Я в восторге. Утомительно слушать индусский-английский и вглядываться в 360р видео. Сейчас персмотрю ВСЕ ролики ахахаа

  • @DiIov
    @DiIov 4 วันที่ผ่านมา

    Пачему так мало просмотров?
    Это же шедевр!
    Хотя на моменте, когда автор приводит пример с auto и cast применительно к vector, и подгорело знатненько, но, видимо это было сделано для привлечения внимания - такая работа над вниманием аудитории вызывает бескоайнее восхищение)

  • @R0bertAkopyan
    @R0bertAkopyan 18 วันที่ผ่านมา +3

    Коротко, информативно, по существу. 10 минут очень удобно. Информация полезна.

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

    не бросай канал бро из - за иннактива, контент хороший. надоело обезьян смотреть с тривиальным кодом) Еще кста было б очень интересно посмотреть что - нибудь про кьют, фрейм шикарный, но контента по нему практически нет. в общем всех благ и развития

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

      Пишем KDE с нуля, на КуТэ шесть!

  • @jonyspencer2795
    @jonyspencer2795 26 วันที่ผ่านมา +2

    Продолжай снимать, очень качественный контент. Я уверен, что тут будет много подписчиков

  • @Alexander_Gurov_RF
    @Alexander_Gurov_RF 3 วันที่ผ่านมา

    std::vector считается устаревшим и не рекомендуется к использованию, если что. Вместо него следует использовать std::bitset. Ну или вектор от чего то вроде enum class bool_t : uint8_t {False, True};

  • @rightmelancholy1170
    @rightmelancholy1170 29 วันที่ผ่านมา

    Хороший формат, продолжай

  • @TheBotNope
    @TheBotNope 12 วันที่ผ่านมา

    Спасибо за качество!

  • @kunak1197
    @kunak1197 28 วันที่ผ่านมา

    Супер серия чëтко и наглядно. Хорошее дополнение к лекциям Ivan Sorokin. Пара замечаний ниже.
    Вектор буллей должен быть забуллен и подвергнут анафеме на собесах и в продакшене. Бьëрн Страуструп хотел как лучше, а получилось как всегда.
    А что -Владимир Ильич писал про старость- Скотт Майерс писал про C++17? Ну камон кто-то в 2024 кодит на C++11/14? Большая просьба к автору канала демонстрировать изменения в C++17/20/23.

  • @thats_embarrassing_JS
    @thats_embarrassing_JS 16 วันที่ผ่านมา +2

    В чём смысл использования static_cast с auto, если мы всё равно пишем тип, который нам нужен? Я не силён в C++, но насколько я знаю, идея auto заключается в том, чтобы тип определялся на этапе выполнения и чтобы не писать длиннющие названия шаблонных типов с параметрами с такими же длиннющими названиями. Но со static_cast мы всё равно явно кастуем значение к нужному типу. В таком случае, мне кажется, действительно легче обойтись без auto и написать сразу тип переменной, нежели чем городить лишний код.

    • @8olegator8
      @8olegator8 14 วันที่ผ่านมา +1

      Все верно, показанные примеры сильно натянутые. Код должен быть читаемым, а static_cast сильно ухудшает читаемость.
      И при использовании auto тип определяется на этапе компиляции.
      А если где-то в коде есть места, которые "не по канону" и делают какую-то магию - на мой взгляд, лучше в явном виде написать комментарий, чтобы потом не возникало проблем.

  • @Nop_90h
    @Nop_90h 19 วันที่ผ่านมา +2

    салям, я может чо не понимаю, но не проще ли написать bool isSmokeDetected = ... вместо auto isSmokeDetected = static_cast ... ну как бы пля.. человек, который пишет подобный код всенепременно должен перегрузить _ВСЕ _ операторы ,все методы сделать виртуальными и вызвать 3 из них в конструкторе..

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

      Посмотри конец видео

    • @Nop_90h
      @Nop_90h 12 วันที่ผ่านมา

      @@cherimolah9493 и чо ?) вот 2 секунды подумать, чувак, чо изменится, если ты вместо auto ep = static_cast напишешь float ep = static_cast.. как auto дополнительно подчеркнет намеренность твоих действий? )
      звездец ... Ну и если ты хочешь мессагу программисту донести, оставь коммент, нахера этот оверхэд со статик кастом

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

    Why for make Sensor you doesn't use enum?

  • @makellan7136
    @makellan7136 29 วันที่ผ่านมา +3

    Привет! По книге Майерса идёшь?

    • @PolevoysProgramming
      @PolevoysProgramming  29 วันที่ผ่านมา

      Привет, да, в описание указана книга и глава, которая разбирается

  • @dmitriyv4557
    @dmitriyv4557 17 วันที่ผ่านมา +1

    не увидел здесь никакого неопределенного поведения, только невнимательность программиста.
    да и пример дурацкий, так и хочется написать комент для джуна, его запилившего - "отрефакторить немедленно".
    о читаемости кода - старый-добрый С-стиль для приведения типов выглядит намного приятнее, чем статик касты (и не надо рассказывать, что тру С++ кодеры должны приводить типы только кастами, это мракобесие).

  • @igorglushatov1948
    @igorglushatov1948 29 วันที่ผ่านมา +2

    Интересная информация, но не понятно, почему это называется в видео "неопределенное поведение", если оно определено и зависит только от внимательности программиста. Но подстава некая есть, осадочек остается

    • @PolevoysProgramming
      @PolevoysProgramming  29 วันที่ผ่านมา +1

      «неопределенное поведение», оно же «undefined behavior» - это понятие из стандарта (описано в §1.3.12) - поведение, которое может возникать в результате использования ошибочных программных конструкций или некорректных данных, на которые Международный Стандарт не налагает никаких требований. Неопределенное поведение также может возникать в ситуациях, не описанных в Стандарте явно.

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

      В данном случае пример специально так подобран, чтобы вызвать разыменование висячего указателя на уже уничтоженный временный объект.
      Когда isSmokeDetected выводится в cout, он приводится к bool, а в операторе приведения происходит разыменование указателя, указывающего на вектор.
      Но сам вектор был уничтожен после инициализации isSmokeDetected, потому что в примере специально так сделано, чтобы вектор был rvalue.
      Очевидно, что разыменование указателя на уничтоженный объект -- чистейшее UB.

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

    Тип "буль" звучит несерьёзно.

    • @R0bertAkopyan
      @R0bertAkopyan 18 วันที่ผ่านมา +1

      Джордж Буль (2 ноября 1815 - 8 декабря 1864) - английский математик и логик.
      С 1849 года был профессором математики Королевского колледжа Корка (ныне Университетский колледж Корка). Один из основателей математической логики.

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

      @@R0bertAkopyan тонко!

  • @wizaral
    @wizaral 19 วันที่ผ่านมา +2

    9:10 ничего это не гарантирует. Комментарий "@ник_прогера: тут хватит float" убирает все вопросы. А если чел из прокси класса возьмёт флот вместо дабла - всё равно выглядит как ошибка.

    • @R0bertAkopyan
      @R0bertAkopyan 18 วันที่ผ่านมา

      У нас teamlead требует удалять такие комментарии. Код должен быть понятен без комментариев.

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

      @@R0bertAkopyan Код без комменатриев, как книга без оглавления. Адепты самодокументируемого кода седьмого дня)