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

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ธ.ค. 2024

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

  • @АндрейШевелёв-г2щ
    @АндрейШевелёв-г2щ 5 หลายเดือนก่อน +16

    Такой канал по плюсам - это то, чего не хватало этому миру

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

      Ага, а то у Константина Владимирова, слишком сложные нюансы для профи, а у других азы. Середина.

  • @Ma_X64
    @Ma_X64 5 หลายเดือนก่อน +43

    С++ прекрасно решает проблемы, которые сам же и создаёт :D
    Хороший язык. Люблю инструменты, в которые можно закопаться, когда нефиг ими делать.

  • @этоя-д8м
    @этоя-д8м 4 หลายเดือนก่อน +2

    все по книжке) идеально для закрепления
    спасибо!!

  • @КириллИванов-м8м
    @КириллИванов-м8м หลายเดือนก่อน

    Спасибо, Дмитрий, только с вашими роликами разобрался с умными указателями. Вы очень хорошо объясняете.

  • @denissav1033
    @denissav1033 5 หลายเดือนก่อน +3

    Короче, вижу фигурные скобки -- это семантика списка инициализации. Такая семантика будет +/- общей для разных классов. Если фигурные скобки с одним значением -- просто список инициализации с одним значением.
    Вижу круглые скобки -- это семантика параметров конструктора. Смысл параметров будет разный для разных классов. Надо смотреть, что там заложил автор класса.
    Поэтому
    vector vec{10} // вектор длины 1 со значением 10
    vector vec(10) // вектор длины 10 с мусором в качестве значений
    vector vec{10, 0} // вектор длины 2 со значениями 10 и 0
    vector vec(10, 0) // вектор длины 10 со значениями 0

  • @finemechanic
    @finemechanic 5 หลายเดือนก่อน +9

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

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

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

    • @robbieazreal3192
      @robbieazreal3192 5 หลายเดือนก่อน +2

      Для того чтобы ТЫ страдал!

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

      @@robbieazreal3192 🤣 Не, ну не так чтоб совсем страдал, но нервно оглядываться на очередной стандарт придётся )

    • @denissav1033
      @denissav1033 5 หลายเดือนก่อน +1

      > делать так, чтобы инициализация в круглых скобках не отличалась
      Нет. См. например std::vector.

  • @billjohnes9380
    @billjohnes9380 5 หลายเดือนก่อน +4

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

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

      А вот вас я бы с удовольствием взял на работу над реально серьезными задачами.
      Молодец!

  • @Ali_Ibragimov_Jostkiy
    @Ali_Ibragimov_Jostkiy 5 หลายเดือนก่อน +7

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

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

      Владимир Константинов не учит, а флексит на лекциях. Понимают его 1-2 подсоса на первых партах, к которым он то и дело по ходу лекции обращается. И то потому что они явно не рядовые студенты, а аспиранты какие-то, которые ту или иную тему уже знают.

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

    2:10. Почему на этом моменте компилятор не сгенерировал оператор перемещения или конструктор перемещения? Потому что есть явно определенный конструктор копирования или оператор копирования?

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

      На сколько мне move семантика применяется когда объект является rvalue значением то есть временным объектом

  • @snow_danik7147
    @snow_danik7147 5 หลายเดือนก่อน +1

    Топ видео, до этого не знал для чего именно это нужно, спасибо)

  • @VladykaVladykov
    @VladykaVladykov 5 หลายเดือนก่อน +1

    Наверное, надёжней использовать конструкцию вида
    auto value = ValueType(Args...)

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

    Круто, помогли, наконец, разобраться что и как работает, спасибо!!

  • @dmitriyv4557
    @dmitriyv4557 5 หลายเดือนก่อน +1

    Ух ты, мне понравилось!
    Молодец, четко изложил вопрос!
    Лайк, пиписка. 🎉

  • @alexbork4250
    @alexbork4250 5 หลายเดือนก่อน +2

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

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

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

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

    Дайте мне переопределение операций в джаву!!!

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

    Фигурная инициализация - интересная тема, хорошо осветил список инициализации (как мне кажется не стоило ломать язык и двадцать минут назвать его "инищиалайзер лист". В целом, лайк конечно

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

    супер контент 😉

  • @HastaQwert
    @HastaQwert 5 หลายเดือนก่อน +2

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

  • @redon638
    @redon638 6 หลายเดือนก่อน +69

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

    • @book1738
      @book1738 5 หลายเดือนก่อน +3

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

    • @book1738
      @book1738 5 หลายเดือนก่อน +6

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

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

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

    • @unethicql
      @unethicql 5 หลายเดือนก่อน +11

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

    • @link-meow
      @link-meow 5 หลายเดือนก่อน

      😅​@@book1738

  • @lev-th
    @lev-th 6 หลายเดือนก่อน

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

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

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

    • @lev-th
      @lev-th 5 หลายเดือนก่อน

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

    • @lev-th
      @lev-th 5 หลายเดือนก่อน

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

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

    Почти всё я знал, кроме конфликтов с std::initializer_list. Меня удивило то, что в ютубе такие темы освещаются

  • @DigitRoach
    @DigitRoach 5 หลายเดือนก่อน +1

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

  • @wsxpocxeafx
    @wsxpocxeafx 6 หลายเดือนก่อน +1

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

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

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

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

      блин. точно )))

  • @VladykaVladykov
    @VladykaVladykov 5 หลายเดือนก่อน +1

    С приведением типов всегда была проблема в языке. Поэтому у нас есть explicit

  • @4spor_t
    @4spor_t 5 หลายเดือนก่อน +1

    Где автор был раньше?!??!? Спасибо большое за видео!

  • @prayer4675
    @prayer4675 5 หลายเดือนก่อน +2

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

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

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

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

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

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

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

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 5 หลายเดือนก่อน

      Просто раст такого делать не умеет, вот вы и не припоминаете

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

      @@AlexAlex-jk2tn Ну а зачем шаманить, когда нужно просто проинициализировать?

  • @Ar6yZuK
    @Ar6yZuK 5 หลายเดือนก่อน +2

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

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

    В рукомендациях залетел твой канал, очень круто делаешь! Подумай о том, чтобы сделать видео о rvalue ссылках. Ни одно видео мне не дало 100 процентного понимаю что да как

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

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

  • @МихаилГалин-п6в
    @МихаилГалин-п6в 5 หลายเดือนก่อน

    Какой это редактор кода?

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

    Создатели C++ забыли для чего нужен любой язык программирования - для решения прикладных/бизнес задач, вместо этого они решают проблемы самого C++

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

    У вас такой отличный голос. Не пробовали быть диктором?

  • @kunak1197
    @kunak1197 6 หลายเดือนก่อน +4

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

  • @nikolaytomov4919
    @nikolaytomov4919 5 หลายเดือนก่อน +1

    Страхотно видео.
    Абонирах се за канала, и изгледах всичките ти видеа. Много са полезни и информативни. Бихте ли обяснили промените в С++ 20 и 23? Как могат да се използват модулите въведени със С++/20? Каква е ситуацията с общодостъпни модули включващи стандартната езикова библиотека?
    Извинете за отвратителната граматика (предполагам е отвратителна), но използвам гугъл преводач, понеже руския ми е много слаб.

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

    "Скотт Майерс называет это примером плохого дизайна интерфейса..." Не хочу хейтить, но раз язык позволяет, значит это зачем-то нужно. Но в принципе мне ролик понравился. Уже лет 25 не программировал на C++ по серьёзному, а хочется вернуться. Достаточно легко слушать видео и визуализация лёгкая для понимания.
    Кстати, а что за редактор кода?

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

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

  • @__is_Void
    @__is_Void 6 หลายเดือนก่อน +1

    👍🏻

  • @wsxpocxeafx
    @wsxpocxeafx 6 หลายเดือนก่อน +4

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

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

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

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

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

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

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

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

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

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

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

  • @СемёнСемёныч-к4е
    @СемёнСемёныч-к4е 5 หลายเดือนก่อน +2

    Складывается ощущение, что эти нововведения делаются так:
    - всех нормальных людей всё устраивает
    - какой-то задрот теоретик, далёкий от энтерпрайза: "а вот МНЕ нехватает какой-то херни, которая нахрен никому не нужна"
    - разрабы плюсов : "СРОЧНО ВЫПУСКАЕМ ОБНОВЛЕНИЕ"
    - задрот доволен, нормальные люди страдают

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

    конструкторы это ошибка language disign, как и исключения. хорошо, что есть языки, где это пофиксили

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

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

  • @Novator_Progressive
    @Novator_Progressive 5 หลายเดือนก่อน +1

    Какие-то странные сущности, и их назначение не очевидно. Теперь понятно, почему многие ругают плюсы.

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

    fifine am8

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

    Топ контент

  • @bannnnnn
    @bannnnnn 6 หลายเดือนก่อน +1

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

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

    Вот это топ видос! Я стал умнее! Наверное. Спасибо!

  • @wsxpocxeafx
    @wsxpocxeafx 6 หลายเดือนก่อน +1

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

  • @azerqgaming
    @azerqgaming 5 หลายเดือนก่อน +2

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

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

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

    • @euuhgzz2791
      @euuhgzz2791 5 หลายเดือนก่อน +2

      А нада быть .da разработчиком

  • @teum3048
    @teum3048 5 หลายเดือนก่อน +1

    А потом они рассказывают, что в js не интуитивное преобразование типов и сравнение == 😂🤣🤣

  • @eugenez7955
    @eugenez7955 22 วันที่ผ่านมา +1

    Мда уж. Неявное преобразование в сях это жесть

  • @Hobby2007
    @Hobby2007 5 หลายเดือนก่อน +1

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

    • @diez4005
      @diez4005 5 หลายเดือนก่อน +2

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

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

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

    • @Kalin_cheetah
      @Kalin_cheetah 5 หลายเดือนก่อน +1

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

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

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

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

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

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

    Я в шоке что у программистов на С++ такие же вопросы как и у нас бедных плебеев с других языков

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

    я не знаю, может только у меня такая проблема, но микрофон очень бьёт в уши

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

    2024 year. New concept... Lol...