Фигурная инициализация в С++ | Углубленное программирование на C++: (По книге Скотта Мейерса) #6

Поділитися
Вставка
  • Опубліковано 24 чер 2024
  • Предыдущее видео: • AUTO и неопределенное ...
    В этом видео мы детально рассмотрим главу 3.1 книги Скотта Мейерса "Effective Modern C++", которая называется "Различие между { } и () при создании объектов". Мы разберем что такое унифицированная (или же фигурная) инициализация, где она может использоваться и какие подводные камни содержит

КОМЕНТАРІ • 67

  • @Ali_Ibragimov_Jostkiy
    @Ali_Ibragimov_Jostkiy День тому +3

    Ты крут, чел! И с фоном и с микрофоном наладил прям контент. Микрофон реально решает, слушать тебя приятно! И тематика не банальная! Сам осваиваю C++, вот твои все видосы посмотрю. Это первый. Респект.
    Так вообще по Константину Владимирову учусь, но у тебя, судя по заголовкам видосов, можно подсмотреть отдельные детали под микроскопом!

  • @finemechanic
    @finemechanic 2 дні тому +4

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

    • @diez4005
      @diez4005 2 дні тому

      А как же обратная совместимость ?

  • @idodoqdo5783
    @idodoqdo5783 2 дні тому

    Круто, поддержу комментарием

  • @Lekan675
    @Lekan675 16 годин тому

    Неожиданно, про С++ мне рассказывает Кевин ДеБрюйне ))

  • @HastaQwert
    @HastaQwert 18 годин тому

    реально годно

  • @Koteyka1489
    @Koteyka1489 16 годин тому

    Топ контент

  • @alexbork4250
    @alexbork4250 2 дні тому

    Я мимокрокодил, потому что синтаксиса такого не видел (не пишу на плюсах), но ролик на 18 минут про отличие двух строчек кода... Вау

    • @alexbork4250
      @alexbork4250 День тому

      @@tgitw-tq6iu невозможно объяснить за 3 минуты?

  • @redon638
    @redon638 4 дні тому +13

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

    • @book1738
      @book1738 День тому

      По твоему есть что-то лучше С++, rust, python или может C ?

    • @book1738
      @book1738 День тому +1

      Я конечно понимаю что каждый язык программирования лучше в определенной сфере, но в данном случае что лучше чем С++??

    • @AlexanderKozaevRu
      @AlexanderKozaevRu День тому

      @@book1738 для низкого уровня - си, чтобы на нём для конкретной платформы написать LISP-машину для прикладного программирования

    • @frdml
      @frdml День тому +1

      А что ты хотел? Любая технология или наука со временем разрастается, потому что развивается и для ее изучения приходится тратить много времени. Многие вещи внедрены в целях безопасности/оптимизации и т.д.
      К тому же тебя никто не обязывает использовать новейшие нововведения стандартов.

    • @user-mf6nl7rs6z
      @user-mf6nl7rs6z 13 годин тому

      😅​@@book1738

  • @wsxpocxeafx
    @wsxpocxeafx 4 дні тому

    8:10 Не знал. Крутяк!

  • @DigitRoach
    @DigitRoach 6 годин тому

    Мне кажется он похож на чела Simple Code , но более продвинутой версии

  • @billjohnes9380
    @billjohnes9380 19 годин тому

    5:15 Ничего там не заменится, там сначала вычислится 5.8, а уже потом, при последующей попытке сужения этого значения, и произойдёт ошибка.
    15:02 А второй элемент равен не 2-м.

  • @__is_Void
    @__is_Void 5 днів тому +1

    👍🏻

  • @prayer4675
    @prayer4675 2 дні тому +1

    Интересно, на сколько инициализация в Rust лучше только что рассказанного шаманства в современном C++?

    • @MakarenkoSasha
      @MakarenkoSasha 23 години тому

      ни на сколько.

    • @prayer4675
      @prayer4675 19 годин тому

      @@MakarenkoSasha Что-то я там такого шаманства не прироминаю. А вы?

    • @MakarenkoSasha
      @MakarenkoSasha 7 годин тому

      @@prayer4675 просто для меня это не шаманство.. видимо 25 лет с++ оставляют отпечаток.

  • @bannnnnn
    @bannnnnn 5 днів тому +1

    Когда интересно но не понятно

  • @Ar6yZuK
    @Ar6yZuK 21 годину тому

    Std initializer list и все эти неявные касты типов ломают статическую типизацию

  • @lev-th
    @lev-th 5 днів тому

    1:40
    Не будет вызван конструктор копирования, эта строка буквально идентична предыдущей. Будет точно так же вызыван только конструктор, соответствующий параметрам в списке инициализации.

    • @z140140
      @z140140 5 годин тому

      для int(int) это и будет конструктор копирования. а дальше он приводит пример с кастомным классом, и это подводка к этому примеру

    • @lev-th
      @lev-th 4 години тому

      @@z140140 примеры принципиально различаются.

    • @lev-th
      @lev-th 4 години тому

      ​@@z140140Примеры принципиально различаются. В первом случае, аналогично как если бы переменная инициализировалась возвращаемым из функции значением, произойдет элизия копирования. Эта оптимизация существует 25 лет и включена по умолчанию даже на О0 во всех компиляторах.

  • @wsxpocxeafx
    @wsxpocxeafx 4 дні тому +1

    Высококачественная подача материала и хорошая речь.

  • @wsxpocxeafx
    @wsxpocxeafx 4 дні тому +2

    Досмотрел до конца, пропало желание учить C++ 😂

    • @billjohnes9380
      @billjohnes9380 19 годин тому

      Учить C++ следует только в одном случае.
      Когда соблюдено одно важное условие.
      Условие простое: необходимо любить C++.
      В остальных случаях это будет каторга, и, в результате, ничего не получится.

    • @wsxpocxeafx
      @wsxpocxeafx 17 годин тому

      @@billjohnes9380 ещё если есть необходимость его учить, например, чтобы вносить изменения в какой-нибудь OpenMW, или чтобы разрабатывать, например, игры на UE5, это первое, что в голову пришло, не знаю куда ещё плюс можно применить, когда есть C# и Kotlin, каждый по своему хорошо. Второй крут корутинами, Compose Multiplatform и коротким синтаксисом, а C# поддерживается мировым гигантом, постоянно развивается и ближе к плюсам по возможностям, на мой субъективный взгляд, чем Kotlin.

    • @wsxpocxeafx
      @wsxpocxeafx 17 годин тому

      ijnpsdgnbfds ljhtheagw ajpinwgesns;grtegawfqlejsnfglaegjkfwn egcljkxzgrnzdghjlk`tNAg bdjzghkef3bnrsz egjkrgkfawEszgrbiegjsabizdfjrgsken
      ещё если есть необходимость его учить, например, чтобы вносить изменения в какой-нибудь OpenMW, или чтобы разрабатывать, например, игры на UE5, это первое, что в голову пришло, не знаю куда ещё плюс можно применить, когда есть C# и Kotlin, каждый по своему хорошо. Второй крут корутинами, Compose Multiplatform и коротким синтаксисом, а C# поддерживается мировым гигантом, постоянно развивается и ближе к плюсам по возможностям, на мой субъективный взгляд, чем Kotlin.

    • @wsxpocxeafx
      @wsxpocxeafx 17 годин тому

      @@billjohnes9380 ______________
      ещё если есть необходимость его учить, например, чтобы вносить изменения в какой-нибудь OpenMW, или чтобы разрабатывать, например, игры на UE5, это первое, что в голову пришло, не знаю куда ещё плюс можно применить, когда есть C# и Kotlin, каждый по своему хорошо. Второй крут корутинами, Com_pose Multip_latfo_rm и коротким синтаксисом, а C# поддерживается мировым гигантом, постоянно развивается и ближе к плюсам по возможностям, на мой субъективный взгляд, чем Kotlin.

    • @wsxpocxeafx
      @wsxpocxeafx 17 годин тому

      @@billjohnes9380 прошлое сообщение адресовано тебе. Не справшивай почему всё так 🤣🤦‍♂🤦‍♂🤦‍♂

  • @kunak1197
    @kunak1197 4 дні тому

    "19 различных способов инициализировать int" - это вам не это. Есть классная статья на Хабре "Инициализация в современном C++", от которой теоретики в ужасе, как на ЭТОМ можно кодить. Зато практики такими вопросами не задаются, т.к. любят/вынуждены ходить по граблям и веруют в то, что кодируют без ошибок и UB. Иногда их в этом пытаются разубедить статические анализаторы, санитайзеры, паники, крэшы и хакеры. Особенно весело, когда в новом релизе стандарта опять что-то улучшили.

  • @Ox111BA6FA
    @Ox111BA6FA 2 дні тому

    1:32 - и зачем это, интересно, при работе с пользовательским классом нужно знать когда конструктор копирования, а когда оператор присваивания? у нормальных классов это одно и то же, порой реализовано одно через другое. если пользовательский класс написан о4ком и там оно разное - то это плохой класс, не используйте его или перепишите, с ним будет только больше проблем.
    и не нужно, наяривать на свои скобки, компилятор все сделает за вас. разницу имеет смысл смотреть только в конечном собранном коде. все остальные рассуждения - ниач0м. в стандарте может быть написано что угодно, а компилятор сделает совершенно другое и оптимизированное. один компилятор сделает одно, другой - другое.

  • @azerqgaming
    @azerqgaming 2 дні тому

    Я .net разработчик, зачем я это смотрю 😂

  • @DART2WADER
    @DART2WADER 18 годин тому

    8:30 вы не последовательны))) : data(initList) {} => : data{initList} {}

  • @Hobby2007
    @Hobby2007 2 дні тому +1

    После подобных видио появляется желание сделать свой собственный яп, такой-же быстрый и низкоуровневый как С/С++, но намного проще, чисто из-за того что будет вырезано большенство бесполезного/заменяемого функционала. Думаю лет через 20 - 30 сделаю. А то я только новичок не сильно шарю. Вдруг всë что я считаю бесполезным на самом деле необходимо.

    • @diez4005
      @diez4005 2 дні тому

      Есть же ASM он реально выглядит попроще )

    • @Hobby2007
      @Hobby2007 2 дні тому

      @@diez4005 в нëм на самом деле тоже много лишнего если бы мог то и его переделал но тогда возможно и сам процессор придëтся переделовать мне на подобное жизни не хватит

    • @Kalin_cheetah
      @Kalin_cheetah День тому

      @@Hobby2007 а не мог бы ты заодно переделать ткань вселенной и заодно человеческую природу так, чтобы не было ни пороков, ни зла, ни смерти?

    • @Hobby2007
      @Hobby2007 День тому

      @@Kalin_cheetah звучит тяжело

    • @Hobby2007
      @Hobby2007 День тому

      @@tgitw-tq6iu естественно я не знаю что такое ЦПП, и ни кто мне про него раньше не говорил. Загуглил вот: ЦПП - Центр Поддержки Пользователей:) Но если ты имел ввиду Центральный Процессор, то я лишь поверхностно представляю его архитектуру, и мне в этом ещё предстоит разобраться.