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

  Рет қаралды 17,849

Полевой Дмитрий

Полевой Дмитрий

Күн бұрын

Пікірлер: 144
@АндрейШевелёв-г2щ
@АндрейШевелёв-г2щ 6 ай бұрын
Такой канал по плюсам - это то, чего не хватало этому миру
@vilture5706
@vilture5706 Ай бұрын
Ага, а то у Константина Владимирова, слишком сложные нюансы для профи, а у других азы. Середина.
@этоя-д8м
@этоя-д8м 5 ай бұрын
все по книжке) идеально для закрепления спасибо!!
@Ma_X64
@Ma_X64 6 ай бұрын
С++ прекрасно решает проблемы, которые сам же и создаёт :D Хороший язык. Люблю инструменты, в которые можно закопаться, когда нефиг ими делать.
@КириллИванов-м8м
@КириллИванов-м8м 2 ай бұрын
Спасибо, Дмитрий, только с вашими роликами разобрался с умными указателями. Вы очень хорошо объясняете.
@Ali_Ibragimov_Jostkiy
@Ali_Ibragimov_Jostkiy 6 ай бұрын
Ты крут, чел! И с фоном и с микрофоном наладил прям контент. Микрофон реально решает, слушать тебя приятно! И тематика не банальная! Сам осваиваю C++, вот твои все видосы посмотрю. Это первый. Респект. Так вообще по Константину Владимирову учусь, но у тебя, судя по заголовкам видосов, можно подсмотреть отдельные детали под микроскопом!
@toxic_champ
@toxic_champ 6 ай бұрын
Владимир Константинов не учит, а флексит на лекциях. Понимают его 1-2 подсоса на первых партах, к которым он то и дело по ходу лекции обращается. И то потому что они явно не рядовые студенты, а аспиранты какие-то, которые ту или иную тему уже знают.
@snow_danik7147
@snow_danik7147 6 ай бұрын
Топ видео, до этого не знал для чего именно это нужно, спасибо)
@denissav1033
@denissav1033 6 ай бұрын
Короче, вижу фигурные скобки -- это семантика списка инициализации. Такая семантика будет +/- общей для разных классов. Если фигурные скобки с одним значением -- просто список инициализации с одним значением. Вижу круглые скобки -- это семантика параметров конструктора. Смысл параметров будет разный для разных классов. Надо смотреть, что там заложил автор класса. Поэтому vector vec{10} // вектор длины 1 со значением 10 vector vec(10) // вектор длины 10 с мусором в качестве значений vector vec{10, 0} // вектор длины 2 со значениями 10 и 0 vector vec(10, 0) // вектор длины 10 со значениями 0
@finemechanic
@finemechanic 6 ай бұрын
Интересный совет по проектированию интерфейсов: делать так, чтобы инициализация в круглых скобках не отличалась от инициализации в фигурных скобка. Тогда вопрос, зачем нужны разные виды скобок.
@diez4005
@diez4005 6 ай бұрын
А как же обратная совместимость ?
@robbieazreal3192
@robbieazreal3192 6 ай бұрын
Для того чтобы ТЫ страдал!
@diez4005
@diez4005 6 ай бұрын
@@robbieazreal3192 🤣 Не, ну не так чтоб совсем страдал, но нервно оглядываться на очередной стандарт придётся )
@denissav1033
@denissav1033 6 ай бұрын
> делать так, чтобы инициализация в круглых скобках не отличалась Нет. См. например std::vector.
@doctorwho4975
@doctorwho4975 6 ай бұрын
Круто, помогли, наконец, разобраться что и как работает, спасибо!!
@iusehjkl
@iusehjkl 5 ай бұрын
2:10. Почему на этом моменте компилятор не сгенерировал оператор перемещения или конструктор перемещения? Потому что есть явно определенный конструктор копирования или оператор копирования?
@there1440
@there1440 4 ай бұрын
На сколько мне move семантика применяется когда объект является rvalue значением то есть временным объектом
@dmitriyv4557
@dmitriyv4557 6 ай бұрын
Ух ты, мне понравилось! Молодец, четко изложил вопрос! Лайк, пиписка. 🎉
@hostpost9752
@hostpost9752 3 ай бұрын
супер контент 😉
@wsxpocxeafx
@wsxpocxeafx 7 ай бұрын
8:10 Не знал. Крутяк!
@HastaQwert
@HastaQwert 6 ай бұрын
реально годно
@alexbork4250
@alexbork4250 6 ай бұрын
Я мимокрокодил, потому что синтаксиса такого не видел (не пишу на плюсах), но ролик на 18 минут про отличие двух строчек кода... Вау
@alexbork4250
@alexbork4250 6 ай бұрын
@@tgitw-tq6iu невозможно объяснить за 3 минуты?
@nukesturbator
@nukesturbator 6 ай бұрын
Фигурная инициализация - интересная тема, хорошо осветил список инициализации (как мне кажется не стоило ломать язык и двадцать минут назвать его "инищиалайзер лист". В целом, лайк конечно
@viper_0097
@viper_0097 6 ай бұрын
Почти всё я знал, кроме конфликтов с std::initializer_list. Меня удивило то, что в ютубе такие темы освещаются
@VladykaVladykov
@VladykaVladykov 6 ай бұрын
Наверное, надёжней использовать конструкцию вида auto value = ValueType(Args...)
@billjohnes9380
@billjohnes9380 6 ай бұрын
5:15 Ничего там не заменится, там сначала вычислится 5.8, а уже потом, при последующей попытке сужения этого значения, и произойдёт ошибка. 15:02 А второй элемент равен не 2-м.
@dmitriyv4557
@dmitriyv4557 6 ай бұрын
А вот вас я бы с удовольствием взял на работу над реально серьезными задачами. Молодец!
@wsxpocxeafx
@wsxpocxeafx 13 күн бұрын
@@dmitriyv4557 взяли бы из-за элементарного замечания?
@dmitriyv4557
@dmitriyv4557 13 күн бұрын
@@wsxpocxeafx за внимательность. Это крайне важная черта характера для хорошего разраба.
@VladykaVladykov
@VladykaVladykov 6 ай бұрын
С приведением типов всегда была проблема в языке. Поэтому у нас есть explicit
@4spor_t
@4spor_t 6 ай бұрын
Где автор был раньше?!??!? Спасибо большое за видео!
@Lekan675
@Lekan675 6 ай бұрын
Неожиданно, про С++ мне рассказывает Кевин ДеБрюйне ))
@MakarenkoSasha
@MakarenkoSasha 6 ай бұрын
блин. точно )))
@cavesalamander6308
@cavesalamander6308 Күн бұрын
А warning'и по поводу ambiguity вызовов выдаются? Или втихушку гадит?
@ExarKun_
@ExarKun_ 6 ай бұрын
Дайте мне переопределение операций в джаву!!!
@asjvchnvh9313
@asjvchnvh9313 6 ай бұрын
В рукомендациях залетел твой канал, очень круто делаешь! Подумай о том, чтобы сделать видео о rvalue ссылках. Ни одно видео мне не дало 100 процентного понимаю что да как
@eugenenuribekov1231
@eugenenuribekov1231 15 күн бұрын
Фигурные скобки это старая добрая агрегатная инициализация из С. Просто ее применение несколько расширили.
@DigitRoach
@DigitRoach 6 ай бұрын
Мне кажется он похож на чела Simple Code , но более продвинутой версии
@idodoqdo5783
@idodoqdo5783 6 ай бұрын
Круто, поддержу комментарием
@СемёнСемёныч-к4е
@СемёнСемёныч-к4е 6 ай бұрын
Складывается ощущение, что эти нововведения делаются так: - всех нормальных людей всё устраивает - какой-то задрот теоретик, далёкий от энтерпрайза: "а вот МНЕ нехватает какой-то херни, которая нахрен никому не нужна" - разрабы плюсов : "СРОЧНО ВЫПУСКАЕМ ОБНОВЛЕНИЕ" - задрот доволен, нормальные люди страдают
@Icanfly-
@Icanfly- 4 ай бұрын
Создатели C++ забыли для чего нужен любой язык программирования - для решения прикладных/бизнес задач, вместо этого они решают проблемы самого C++
@wsxpocxeafx
@wsxpocxeafx 13 күн бұрын
Ждём Carbon
@cavesalamander6308
@cavesalamander6308 Күн бұрын
Неточно. Точнее будет: решают проблемы языка, одновременно создавая ворох новых. Юзаю в своем уголке С++98 и счастлив.
@kunak1197
@kunak1197 7 ай бұрын
"19 различных способов инициализировать int" - это вам не это. Есть классная статья на Хабре "Инициализация в современном C++", от которой теоретики в ужасе, как на ЭТОМ можно кодить. Зато практики такими вопросами не задаются, т.к. любят/вынуждены ходить по граблям и веруют в то, что кодируют без ошибок и UB. Иногда их в этом пытаются разубедить статические анализаторы, санитайзеры, паники, крэшы и хакеры. Особенно весело, когда в новом релизе стандарта опять что-то улучшили.
@prayer4675
@prayer4675 6 ай бұрын
Интересно, на сколько инициализация в Rust лучше только что рассказанного шаманства в современном C++?
@MakarenkoSasha
@MakarenkoSasha 6 ай бұрын
ни на сколько.
@prayer4675
@prayer4675 6 ай бұрын
@@MakarenkoSasha Что-то я там такого шаманства не прироминаю. А вы?
@MakarenkoSasha
@MakarenkoSasha 6 ай бұрын
@@prayer4675 просто для меня это не шаманство.. видимо 25 лет с++ оставляют отпечаток.
@AlexAlex-jk2tn
@AlexAlex-jk2tn 6 ай бұрын
Просто раст такого делать не умеет, вот вы и не припоминаете
@prayer4675
@prayer4675 6 ай бұрын
@@AlexAlex-jk2tn Ну а зачем шаманить, когда нужно просто проинициализировать?
@Ar6yZuK
@Ar6yZuK 6 ай бұрын
Std initializer list и все эти неявные касты типов ломают статическую типизацию
@nikolaytomov4919
@nikolaytomov4919 6 ай бұрын
Страхотно видео. Абонирах се за канала, и изгледах всичките ти видеа. Много са полезни и информативни. Бихте ли обяснили промените в С++ 20 и 23? Как могат да се използват модулите въведени със С++/20? Каква е ситуацията с общодостъпни модули включващи стандартната езикова библиотека? Извинете за отвратителната граматика (предполагам е отвратителна), но използвам гугъл преводач, понеже руския ми е много слаб.
@__is_Void
@__is_Void 7 ай бұрын
👍🏻
@lev-th
@lev-th 7 ай бұрын
1:40 Не будет вызван конструктор копирования, эта строка буквально идентична предыдущей. Будет точно так же вызыван только конструктор, соответствующий параметрам в списке инициализации.
@z140140
@z140140 6 ай бұрын
для int(int) это и будет конструктор копирования. а дальше он приводит пример с кастомным классом, и это подводка к этому примеру
@lev-th
@lev-th 6 ай бұрын
@@z140140 примеры принципиально различаются.
@lev-th
@lev-th 6 ай бұрын
​@@z140140Примеры принципиально различаются. В первом случае, аналогично как если бы переменная инициализировалась возвращаемым из функции значением, произойдет элизия копирования. Эта оптимизация существует 25 лет и включена по умолчанию даже на О0 во всех компиляторах.
@МихаилГалин-п6в
@МихаилГалин-п6в 6 ай бұрын
Какой это редактор кода?
@alexanderm8312
@alexanderm8312 6 ай бұрын
QtCreator
@Koteyka1489
@Koteyka1489 6 ай бұрын
Топ контент
@grinlex
@grinlex 6 ай бұрын
У вас такой отличный голос. Не пробовали быть диктором?
@luckystrike91
@luckystrike91 6 ай бұрын
конструкторы это ошибка language disign, как и исключения. хорошо, что есть языки, где это пофиксили
@Satabol
@Satabol 6 ай бұрын
"Скотт Майерс называет это примером плохого дизайна интерфейса..." Не хочу хейтить, но раз язык позволяет, значит это зачем-то нужно. Но в принципе мне ролик понравился. Уже лет 25 не программировал на C++ по серьёзному, а хочется вернуться. Достаточно легко слушать видео и визуализация лёгкая для понимания. Кстати, а что за редактор кода?
@PolevoysProgramming
@PolevoysProgramming 6 ай бұрын
Редактор - Qt Creator
@Ox111BA6FA
@Ox111BA6FA 6 ай бұрын
1:32 - и зачем это, интересно, при работе с пользовательским классом нужно знать когда конструктор копирования, а когда оператор присваивания? у нормальных классов это одно и то же, порой реализовано одно через другое. если пользовательский класс написан о4ком и там оно разное - то это плохой класс, не используйте его или перепишите, с ним будет только больше проблем. и не нужно, наяривать на свои скобки, компилятор все сделает за вас. разницу имеет смысл смотреть только в конечном собранном коде. все остальные рассуждения - ниач0м. в стандарте может быть написано что угодно, а компилятор сделает совершенно другое и оптимизированное. один компилятор сделает одно, другой - другое.
@wsxpocxeafx
@wsxpocxeafx 7 ай бұрын
Досмотрел до конца, пропало желание учить C++ 😂
@billjohnes9380
@billjohnes9380 6 ай бұрын
Учить C++ следует только в одном случае. Когда соблюдено одно важное условие. Условие простое: необходимо любить C++. В остальных случаях это будет каторга, и, в результате, ничего не получится.
@wsxpocxeafx
@wsxpocxeafx 6 ай бұрын
@@billjohnes9380 ещё если есть необходимость его учить, например, чтобы вносить изменения в какой-нибудь OpenMW, или чтобы разрабатывать, например, игры на UE5, это первое, что в голову пришло, не знаю куда ещё плюс можно применить, когда есть C# и Kotlin, каждый по своему хорошо. Второй крут корутинами, Compose Multiplatform и коротким синтаксисом, а C# поддерживается мировым гигантом, постоянно развивается и ближе к плюсам по возможностям, на мой субъективный взгляд, чем Kotlin.
@wsxpocxeafx
@wsxpocxeafx 6 ай бұрын
ijnpsdgnbfds ljhtheagw ajpinwgesns;grtegawfqlejsnfglaegjkfwn egcljkxzgrnzdghjlk`tNAg bdjzghkef3bnrsz egjkrgkfawEszgrbiegjsabizdfjrgsken ещё если есть необходимость его учить, например, чтобы вносить изменения в какой-нибудь OpenMW, или чтобы разрабатывать, например, игры на UE5, это первое, что в голову пришло, не знаю куда ещё плюс можно применить, когда есть C# и Kotlin, каждый по своему хорошо. Второй крут корутинами, Compose Multiplatform и коротким синтаксисом, а C# поддерживается мировым гигантом, постоянно развивается и ближе к плюсам по возможностям, на мой субъективный взгляд, чем Kotlin.
@wsxpocxeafx
@wsxpocxeafx 6 ай бұрын
@@billjohnes9380 ______________ ещё если есть необходимость его учить, например, чтобы вносить изменения в какой-нибудь OpenMW, или чтобы разрабатывать, например, игры на UE5, это первое, что в голову пришло, не знаю куда ещё плюс можно применить, когда есть C# и Kotlin, каждый по своему хорошо. Второй крут корутинами, Com_pose Multip_latfo_rm и коротким синтаксисом, а C# поддерживается мировым гигантом, постоянно развивается и ближе к плюсам по возможностям, на мой субъективный взгляд, чем Kotlin.
@wsxpocxeafx
@wsxpocxeafx 6 ай бұрын
@@billjohnes9380 прошлое сообщение адресовано тебе. Не справшивай почему всё так 🤣🤦‍♂🤦‍♂🤦‍♂
@Novator_Progressive
@Novator_Progressive 6 ай бұрын
Какие-то странные сущности, и их назначение не очевидно. Теперь понятно, почему многие ругают плюсы.
@redon638
@redon638 7 ай бұрын
Синтаксис c++ превратился в цыганский табор, и ощущается он не как язык программирования, а как русский язык, где в каждом правиле есть свои особенности и, чтобы действительно разобраться во всех тонкостях, надо положить жизнь на это. Мне кажется для этого языка уже нет хорошего применения в новых проектах, которые не зависят от старого кода.
@book1738
@book1738 6 ай бұрын
По твоему есть что-то лучше С++, rust, python или может C ?
@book1738
@book1738 6 ай бұрын
Я конечно понимаю что каждый язык программирования лучше в определенной сфере, но в данном случае что лучше чем С++??
@AlexanderKozaevRu
@AlexanderKozaevRu 6 ай бұрын
@@book1738 для низкого уровня - си, чтобы на нём для конкретной платформы написать LISP-машину для прикладного программирования
@unethicql
@unethicql 6 ай бұрын
А что ты хотел? Любая технология или наука со временем разрастается, потому что развивается и для ее изучения приходится тратить много времени. Многие вещи внедрены в целях безопасности/оптимизации и т.д. К тому же тебя никто не обязывает использовать новейшие нововведения стандартов.
@link-meow
@link-meow 6 ай бұрын
😅​@@book1738
@donlinoleum831
@donlinoleum831 6 ай бұрын
Вот это топ видос! Я стал умнее! Наверное. Спасибо!
@bannnnnn
@bannnnnn 7 ай бұрын
Когда интересно но не понятно
@DART2WADER
@DART2WADER 6 ай бұрын
8:30 вы не последовательны))) : data(initList) {} => : data{initList} {}
@wsxpocxeafx
@wsxpocxeafx 7 ай бұрын
Высококачественная подача материала и хорошая речь.
@bsprspktvnk
@bsprspktvnk 6 ай бұрын
fifine am8
@ДмитрийЛи-п5г
@ДмитрийЛи-п5г 3 күн бұрын
я вот 35 секунд смотрю, у меня 2 раза уже стул сгорел подо мной.. программисты епт
@teum3048
@teum3048 6 ай бұрын
А потом они рассказывают, что в js не интуитивное преобразование типов и сравнение == 😂🤣🤣
@eugenez7955
@eugenez7955 Ай бұрын
Мда уж. Неявное преобразование в сях это жесть
@azerqgaming
@azerqgaming 6 ай бұрын
Я .net разработчик, зачем я это смотрю 😂
@dmitriyv4557
@dmitriyv4557 6 ай бұрын
Ну как, теперь ты знаешь, что и в С++ подналожили синтаксического сахара, и есть масса возможностей сбить с толку новичков совершенно тривиальными вещами, записанными через задницу. 😊
@euuhgzz2791
@euuhgzz2791 6 ай бұрын
А нада быть .da разработчиком
@animemchik
@animemchik Ай бұрын
Я в шоке что у программистов на С++ такие же вопросы как и у нас бедных плебеев с других языков
@Hobby2007
@Hobby2007 6 ай бұрын
После подобных видио появляется желание сделать свой собственный яп, такой-же быстрый и низкоуровневый как С/С++, но намного проще, чисто из-за того что будет вырезано большенство бесполезного/заменяемого функционала. Думаю лет через 20 - 30 сделаю. А то я только новичок не сильно шарю. Вдруг всë что я считаю бесполезным на самом деле необходимо.
@diez4005
@diez4005 6 ай бұрын
Есть же ASM он реально выглядит попроще )
@Hobby2007
@Hobby2007 6 ай бұрын
@@diez4005 в нëм на самом деле тоже много лишнего если бы мог то и его переделал но тогда возможно и сам процессор придëтся переделовать мне на подобное жизни не хватит
@Kalin_cheetah
@Kalin_cheetah 6 ай бұрын
@@Hobby2007 а не мог бы ты заодно переделать ткань вселенной и заодно человеческую природу так, чтобы не было ни пороков, ни зла, ни смерти?
@Hobby2007
@Hobby2007 6 ай бұрын
@@Kalin_cheetah звучит тяжело
@Hobby2007
@Hobby2007 6 ай бұрын
@@tgitw-tq6iu естественно я не знаю что такое ЦПП, и ни кто мне про него раньше не говорил. Загуглил вот: ЦПП - Центр Поддержки Пользователей:) Но если ты имел ввиду Центральный Процессор, то я лишь поверхностно представляю его архитектуру, и мне в этом ещё предстоит разобраться.
@grinlex
@grinlex 6 ай бұрын
я не знаю, может только у меня такая проблема, но микрофон очень бьёт в уши
@Jaroshevskii
@Jaroshevskii 6 ай бұрын
2024 year. New concept... Lol...
ты C++ РАЗРАБОТЧИК?) ага
12:04
Winderton
Рет қаралды 250 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
Quando eu quero Sushi (sem desperdiçar) 🍣
00:26
Los Wagners
Рет қаралды 15 МЛН
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
Минимум математики для Айтишников
16:12
Основы семантики перемещения в с++
18:14
Полевой Дмитрий
Рет қаралды 8 М.
31 nooby C++ habits you need to ditch
16:18
mCoding
Рет қаралды 856 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН