Конструктор копирования. Что это. Пример. Когда вызывается Копирование объектов по умолчанию C++ #82

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

КОМЕНТАРІ • 746

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +185

    *Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*

    • @zaramar8250
      @zaramar8250 7 років тому +5

      Спасибо огромное,прямо все по полочкам разложил.

    • @lelouchlamperug6836
      @lelouchlamperug6836 5 років тому

      получается используя один и тот же указатель data, мы не копируем, а просто перезаписываем одну область памяти, разве нет?

    • @lboomiellboomiel1640
      @lboomiellboomiel1640 4 роки тому

      Спасибо большое полезный контент. Изучаю программирование достаточно долго, хоть я и новичек. Сделал вывод, что среди всех, лучше всего учиться у тебя. Удачи, пили еще контента. Каждое видео обожаю

    • @greatskydrake9531
      @greatskydrake9531 4 роки тому

      Конструктор копирования надо объявлять в заголовке класса ?

    • @lboomiellboomiel1640
      @lboomiellboomiel1640 4 роки тому

      Great Sky Drake конструктор копирования объявляется внутри класса. Это как обычная функция, только со своим синтаксисом

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +965

    Урок довольно сложный и длинный, на запись и монтаж потратил 3 часа. Но конструктор копирования один из важнейших моментов в ООП, так что надеюсь всё не зря. Всем настойчивости в обучении! =)

    • @СергейКравченко-щ6р
      @СергейКравченко-щ6р 7 років тому +18

      Было бы хорошо, если бы Вы выложили исходный код в группе в ВК, так как после просмотра Вашего видео полезно реализовать даже идентичный код, то есть по памяти написать такой же и всё хорошенько усвоить, так как урок действительно не с лёгких. Мое мнение как новичка! СПАСИБО ЗА УРОК!

    • @pluto2656
      @pluto2656 7 років тому +1

      а как статические объявленные свойства копировать в конструкторе копирования. Или их не нужно копировать

    • @СправаФея
      @СправаФея 7 років тому +8

      Pluto, да просто чз присваивание копировать. на видео, обрати внимание на статическую переменную int Size, которую объявили в 140 сроке, дак вот копирование этой переменной организовано в "конструкторе копирования" в 121 строке: this->Size = other.Size;. Ну, а если в твоем классе динамические переменные вообще отсутствуют, и ты пользуешь только статические - тогда тебе подойдет "стандартный" конструктор копирования объектов. т.е., самому перегружать этот конструктор тебе в принципе смысла нет,

    • @inex550
      @inex550 6 років тому +2

      Всё доходчиво и понятно, спасибо за ваши уроки!

    • @ZestRise
      @ZestRise 5 років тому +2

      @@СергейКравченко-щ6р Я бы вам рекомендовал просмотреть видео несколько раз, ПОНЯТЬ смысл, и реализовать такой конструктор самому, так как это будет лучшим способом написания кода, а не его копированием. успехов

  • @rocker5652
    @rocker5652 3 роки тому +371

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

    • @N32-e1g
      @N32-e1g 2 роки тому +1

      0

    • @Пользовательпрофессионал
      @Пользовательпрофессионал 2 роки тому +15

      @@N32-e1g у меня вся группа в универе смотрит эти лекции, и это только 1 курс, а всего их 4, так что цифра там большая)

    • @N32-e1g
      @N32-e1g 2 роки тому +5

      @@Пользовательпрофессионал смотреть им мало чем поможет

    • @userrishiy
      @userrishiy 2 роки тому +6

      @@N32-e1g поможет ещё как) если тебе не помогло, стоит задуматься.

    • @N32-e1g
      @N32-e1g 2 роки тому

      @@userrishiy я имею ввиду что нужна и практика

  • @БорисКатовский
    @БорисКатовский 5 років тому +106

    Мой фарш в голове согласился принять это только с 4-го раза!! Хоть и тема трудноватая, но вы обладаете крутейшими преподавательскими способностями!!!! Спасибо, Сергей!!!!

    • @terrarianxyt8332
      @terrarianxyt8332 2 роки тому +5

      Тема настолько сложный что мой фарш стал котлетом, кого нибудь угостить?

    • @saintnikija7821
      @saintnikija7821 2 роки тому

      @@terrarianxyt8332 как успехи?

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи в программировании

  • @kanacolt1347
    @kanacolt1347 2 місяці тому +7

    24 год, 3 октября, двенадцать ночи. А я сижу и смотрю семилетней давности видео, потому что не повезло с преподами. И что бы я без Вас делала? Спасибо большое, за то, что Вы есть! Всего Вам самого лучшего!

  • @juliakond9393
    @juliakond9393 6 років тому +102

    Спасибо огромное! Учусь в академии на программиста. Ваш канал посоветовала всем одногруппникам. Многие из них стали смотреть Ваши уроки. Недавно один из одногруппников сказал мне:"Забил на все и сутки смотрел SimpleCode, не мог оторваться". Как дополнительный материал Ваш канал просто бесценен!!!

    • @BrownAleks
      @BrownAleks 4 роки тому +41

      Скорее всего : Дополнительный материал, это то, что - "Учусь в академии на программиста", к тем урокам которые преподаёт Сергей? Вы наверное так хотели выразится? XD)))

    • @Isturfore
      @Isturfore 7 місяців тому

      как у тебя по программированию?

    • @juliakond9393
      @juliakond9393 7 місяців тому +2

      @@Isturfore Норм. Работаю. Middle

  • @SeshAlex
    @SeshAlex 6 років тому +125

    Общая картина понятна, но мозг ой как не хочет детально все усвоить. Спасибо за урок, и как обычно, лайкос:)))

    • @Isturfore
      @Isturfore 7 місяців тому +2

      а сейчас усвоил?

  • @ИванШабунин379
    @ИванШабунин379 2 роки тому +23

    Сергей, не забрасывайте, пожалуйста, канал!!
    Вы лучший учитель программирования в русскоязычном Ютубе!!!

    • @ag7720
      @ag7720 Рік тому +2

      К сожалению у Сергея спецоперация за окном, этим и вызвана приостановка в выпуске новых уроков

    • @ghg6759
      @ghg6759 Рік тому

      @@ag7720уроки он забросил еще до войны

    • @spidpayk0089
      @spidpayk0089 Рік тому +6

      @@ag7720 не спецоперация, а война

    • @ruslandad365
      @ruslandad365 Рік тому

      @@ag7720 А он что из Украины чтоли?

    • @ag7720
      @ag7720 Рік тому

      @@ruslandad365 вроде бы из Харькова

  • @9080artur
    @9080artur 4 роки тому +24

    Это просто самый лучший преподаватель, которого я встречал в своей жизни, так, как Вы обьясняете, не обьясняет никто. Посмотрел пару раз заново видео, было все равно непонятно, на 5 раз я понял как это элементарно и гениально, будто что-то щелкнуло в голове. Я обязательно часть первой зарплаты с работы в IT отправлю Вам. Спасибо большое!! Огромное, человеческое спасибо!!!

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +49

    Конструктор копирования. Что это. Пример. Синтаксис. Когда вызывается. Копирование объектов по умолчанию. C++ Для начинающих. Урок#82

  • @ОлексійЛебедєв-ж6о
    @ОлексійЛебедєв-ж6о 6 років тому +129

    Мдааа. Сложновато с первого раза. но ставлю лайк :))

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @sadMilkT_T
    @sadMilkT_T 4 роки тому +20

    По вашим урокам понял и изучил больше чем за 2 семестра в институте, вот бы все преподаватели также хорошо всё объясняли, спасибо вам огромное!

    • @Empty_line
      @Empty_line Рік тому

      Привет как успехи? Можешь ответить на вопрос? Почему другой: 16:04

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @vadimgreen5352
    @vadimgreen5352 3 роки тому +17

    Застопорился на этом видео жестко, впал в прокрастинацию на недельку, но я вернулся. Сергей, респект за твои труды)

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

    • @vadimgreen5352
      @vadimgreen5352 7 місяців тому +2

      @@Isturfore пишу свой квест

  • @Salavat1k
    @Salavat1k 5 років тому +65

    получается алгоритм такой:
    в паблике класса два конструктора для одного класса: MyClass(int size) и MyClass(const MyClass &other)
    После старта программы сначала создается объект MyClass a(10) и отрабатывает первый конструктор MyClass(int size)
    при этом:
    1) создается указатель на ячейки памяти *data. Из прошлых уроков такой указатель может также будет указателем на начало массива data[] объекта а.
    2) скрытой переменной Size объекта присваивается значение size=10
    3) массиву data[] устанавливается динамический размер =10
    4) массив циклом заполняется значениями от нуля до девятки
    5) выводится на экран сообщение "Вызвался конструктор"
    далее в main переходим ко второму объекту класса MyClass b(a) и отрабатывает уже второй конструктор MyClass(const MyClass &other):
    1) скрытой переменной Size объекта b присваивается значение size, такое же как у объекта а
    2) создается указатель *data и выделяется память для нового объекта b или иначе для нового массива data[] объекта b.
    3) через цикл в каждую ячейку массива объекта b копируются значения массива объекта а
    4) вызывается сообщение "Вызвался конструктор копирования"
    получается два одинаковых объекта с разными адресами памяти.
    далее вызывается деструктор для второго объекта и потом для первого.
    Это гениально просто! Получается, что применяется своеобразная перегрузка конструкторов. Однако на данном этапе не понятна практическая ценность этого, она расскрывается в следующем уроке.

    • @sheldon3705
      @sheldon3705 5 років тому +4

      Я только не понял если у нас скрытой переменной Size объекта b присваивается значение скрытой переменной Size объекта a, то зачем в данной строчке кода: this->data = new int[other.Size] и данной строчке кода: for (int i(0); i < other.Size; i++); писать размер массива other.Size а не просто Size? Ведь скрытая переменная нового объекта b уже хранит в себе значение скрытой переменной Size объекта a.

    • @flown4qqqq
      @flown4qqqq 5 років тому +3

      @@sheldon3705, а какая разница? В данном случае ничего же не меняется. Что мы напишем "this->data = new int[other.Size], что просто this-> data = new int [Size], результат будет одним и тем же

    • @sheldon3705
      @sheldon3705 5 років тому

      Вот я и спрашиваю почему именно озер сайз написано. Мне ответили что для большей читаемости и понятности кода. Ты тоже учишься по его урокам сейчас?

    • @MRWOLFHACK
      @MRWOLFHACK 5 років тому

      @@sheldon3705 Люди учатся по разным учебникам курсам и т.д к примеру он нас учит делать код кто-то повторяем его манеру а кто-то нет,в програмирование как в картинной галереи кто-то считает эту картину красивой и делает похожее на нее а кто-то другую тоже с other.Size и Size кто как хочет так и пишет , а стандарты нужны лишь для того чтобы все понимали код.
      ЕСЛИ В КРАТЦЕ ТО КТО-ТО ПИШЕТ other.Size А КТО ТО ПРОСТО Size
      P.s Отпишитесь если меня не поняли
      P.p.s Ах да читаете иностранные форумы там тоже есть много похожих вопросов

    • @MRWOLFHACK
      @MRWOLFHACK 5 років тому

      @@flown4qqqq Верно но по-моему мы с ответом запаздали

  • @shaa8193
    @shaa8193 6 років тому +45

    Смотрел где-то месяц назад не понятно было, понял что я что-то да пропустил, пересмотрел всё заного и наконец-то понял. Спасибо ^^

    • @batfist6595
      @batfist6595 5 років тому +13

      месяц назад: не хватает уровня мудрости

    • @Roizel-zm1bd
      @Roizel-zm1bd 4 роки тому +4

      @@batfist6595 Ваш интелект слишком низок для заклинания "Конструктор копирования".

    • @ivanliaz
      @ivanliaz 10 місяців тому

      @@batfist6595 🤣

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

    • @shirker3972
      @shirker3972 5 місяців тому

      @@Isturforeкак успехи

  • @SibMetalStarlight
    @SibMetalStarlight 6 років тому +1

    Поставил на паузу на 5:08, пишу.
    При передаче параметра по значению, внутри функции создаётся локальная копия переменной (того типа, который указан в списке принимаемых параметров). Из памяти - честно, как и просили :)
    Сегодня сложный, но достаточно хорошо разжеванный урок.
    Спасибо за работу!

  • @yegorpo2043
    @yegorpo2043 7 років тому +44

    Спасибо за проделанную работу

  • @РоманВасин-ю1р
    @РоманВасин-ю1р 4 роки тому +9

    После первого просмотра понял что тема совсем непростая, пришлось откатится назад к уроку по копированию данных из массива в массив. Хотелось бы больше практических занятий по данным урокам, это как пожелание. . Ещё раз спасибо за уроки.

  • @yanvolkovich1414
    @yanvolkovich1414 5 років тому +5

    спасибо тебе хороший и умный человек за твои уроки, если бы не ты, не знаю как бы в этом всем разбирался, комменты никогда не пишу, но уроки настолько хорошие, что нельзя не поблагодарить, здоровья тебе и твоим близким!

  • @zvoni03
    @zvoni03 5 років тому +2

    наверное где-то с 22ой минуты потерял связь) спасибо за урок) на вас держится весь ютуб, благодаря вам он не помойка

  • @armanmanukyan1970
    @armanmanukyan1970 5 років тому +2

    Выскажусь по поводу всего курса. Канал - шикарный. Подача материала - просто о сложном.Без воды, все по делу.Хотелось бы, в Вашем изложении, разобраться с конструкторами переноса и, в целом, с "move semantics".Спасибо за Ваш труд.

  • @SimpleCodeIT
    @SimpleCodeIT  7 років тому +9

    #конструкторкопирования #ООП #SimpleCode #урокипрограммировани

  • @sov.harlem934
    @sov.harlem934 5 років тому +73

    Понял с первого раза, новичков может сильно спутать пример применения Кк.
    Вот, кто сразу не понял, постарался вычленить суть:
    Конструктор копирования - конструктор, реализуемый по умолчанию, и вызываемый при копировании объекта класса(передача параметром переменной типа класс).
    Его особенность в том, что он делает абсолютно идентичную копию объекта побитово.
    Это может создать проблему в том случае, когда в описании класса мы реализуем динамический массив. В таком случае, при копировании экземпляра класса, динамический массив тоже скопируется, а также и адрес его указателя. Иначе говоря, два указателя будут хранить один и тотже адрес, и когда мы попытаемся реализовать оператор delete[] в деструкторе, он попытается дважды очистить одно и тоже место в оперативной памяти, что и вызовет ошибку.
    Синтаксис:
    class Human
    {
    public:
    Human(const Human &other)
    //передача параметром объекта типа класс, разумеется, по ссылке
    {
    }
    };

    • @YanganiV
      @YanganiV 2 роки тому +1

      Спасибо! Теперь я понимаю что к чему.

    • @arsIsv
      @arsIsv 2 роки тому +5

      То есть по факту КК нужен для выборочного копирования, либо аккуратного копирования если есть указатели?

    • @gok4260
      @gok4260 Рік тому +1

      что такое кк

    • @isolaneed2445
      @isolaneed2445 Рік тому

      ​@@gok4260, конструктор копирования

  • @aleksmall7449
    @aleksmall7449 5 років тому +25

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

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому +7

      Не совсем согласен. Иногда достаточно поверить преподавателю, что это важно, и лучше это сразу усвоить. Но соглашусь, что с примером, как применять, обычно изучать что-то новое приятнее и легче.

    • @КириллГусарев-р5х
      @КириллГусарев-р5х 2 роки тому +4

      @@Kokurorokuko преподавателям программирования доверять нельзя. Многие из них ничего не понимают.

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @yuriynesterenko9280
    @yuriynesterenko9280 6 років тому +14

    Спасибо за труды!) Довольно сложная тема в С++, но без нее никак!

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @bookuha
    @bookuha 3 роки тому +3

    Спасибо большое! Зашло на ура) хоть и появлялись сомнения о выборе карьеры и мысли о тщетности бытия, но к середине урока всё просто мигом прояснилось

  • @MosqRap
    @MosqRap 5 років тому +12

    Помню смотрел твои видосы, когда у тебя еще были лишь сотни просмотров) Вот сейчас пересматриваю, т.к. через месяц гос. экзамен, и нужно всё повторить) Спасибо за твой труд!

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @igorbologov8452
    @igorbologov8452 Рік тому +2

    2 года назад начал с ваших уроков, сейчас уже работаю программистом, с тех пор познакомился с Си, Rust, Python. Сейчас снова нужно было начинать писать на с++, возвращаюсь иногда к урокам, чтобы освежить некоторые моменты и понастальгировать:) Спасибо огромное!

    • @By_B0SS
      @By_B0SS Рік тому

      а как вы учились и потом вот запоминали это все ? может смотрели еще что то кроме этих уроков ? когда учились здесь или вообще как вы осваивали язык когда начинали учиться ?

    • @igorbologov8452
      @igorbologov8452 Рік тому +1

      @@By_B0SS начинал с этих уроков, потом переключился на написание шейдеров, помимо этого еще кучу разных видосов смотрел, повторял, что делают ,пытялся сам разобраться. Купил курс в универе по питону, его прошел чисто по приколу. Алгоритмы и с труктуры данных наше все и куча практики. И я всё равно еще лошара, так что да, это нелегко

  • @elvinaustin1022
    @elvinaustin1022 5 років тому +3

    Спасибо Серега , за 3 захода все понял досконально, все разложилось в голове по полочкам на третий раз просмотра )). Спасибо еще раз от души. По книги это можно неделю изучать )))

  • @АртёмГуртиков-х9ч
    @АртёмГуртиков-х9ч 3 роки тому +1

    Пусть С пятого раза, но я все понял !!! Терпение и труд все перетрут ... спасибо Сергей за ваш труд!

  • @LenTos1337
    @LenTos1337 6 років тому +19

    Спасибо вам большое за урок, как всегда. Очень сложная тема, но вы как всегда всё детально объяснили, и я даже умудрился всё понять! Ещё раз, огромнейшее вам спасибо за труд

  • @iouribalachov2108
    @iouribalachov2108 3 роки тому

    Долго держался, но вынужден признать - преп и его уроки гениальны!!! Другим далеко в объяснении подобных сложных вещей!!! Благодарю, и успехов и процветания !!!

  • @osinandrey73
    @osinandrey73 5 років тому

    Из выше сказанных уроков все было относительно понятно, при написании кода. По этот урок!!! Суть понятна, написать такое копирование сложно. Буду пересматривать. Спасибо Сергею за такие уроки.

  • @bodamat
    @bodamat 4 роки тому +3

    Спасибо большое! Урок хоч очень длинний, но очень важний. Я много чего понял. Спасибо еще раз!

  • @Константин-б8з8ы
    @Константин-б8з8ы 6 років тому +7

    за неделю 90 видосов просмотрено, спасибо за труд

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      Главное - смотреть вдумчиво. Хорошо, если Вы так и делаете.

  • @kabanenko5319
    @kabanenko5319 3 роки тому +1

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

  • @Nikitunr2013
    @Nikitunr2013 4 роки тому +2

    Фух. С 4-го раза понял. Оказывается все было очень просто... Спасибо за годный видос, однозначно лайк!) Если кому поможет - this для каждого индивидуален, так как в параметре функции мы вводим новую переменную как ссылку, то имеем право пользоваться данными класса, который был отправлен в параметр функции...

  • @disgust9862
    @disgust9862 4 роки тому +3

    четвёртый раз пересматриваю, спасибо за труды

  • @Bagasl
    @Bagasl 5 років тому +1

    Автор, это лучший курс русском ютубе по программированию в принципе, даже если рассматривать другие языки. Огромное тебе спасибо за то, что ты объясняешь всё, что под "капотом" происходит. Именно то, что я искал. Можешь посоветовать какие нибудь книги, чтобы лучше понять процессы, которые происходят на низком уровне, вроде работы памяти, garbage colector'a и тд. Не именно в плюсах, а вообще в целом при программировании

  • @woodlandfantomas2044
    @woodlandfantomas2044 4 роки тому

    Отличное изложение. Пользуюсь Вашими уроками как справочником, когда нужно восстановить то, что забыл.

  • @rajinthunderkeg5005
    @rajinthunderkeg5005 6 років тому +4

    Огромное спасибо за столь качественный материал, Сергей!
    С первого раза не зашло, только после нескольких просмотров мой разум прозрел и я понял, что здесь к чему :)
    Главное - долбить в одну точку и не останавливаться и тогда точно всё получится!)

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @ebjikkolu4757
    @ebjikkolu4757 6 років тому +64

    Что происходит,что происходит....Уже не понимаю ,что происходит,как только закончилось процедурное программирование и началось объектно-ориентированное))))

    • @deltaeptat1546
      @deltaeptat1546 4 роки тому +2

      Я всё же не понимаю, что тут сложного? Как по мне ОО программирование раз в 100 легче процедурного. Кста, какой результат за 2 года? :)

    • @Heart_of_the_world_1985
      @Heart_of_the_world_1985 3 роки тому +10

      Главное не сдаваться и "грызть"! Не получается - ляг отдохни, а потом запускай плуги глубже - по предложению, отдельному слову... Смысл в том, что данный урок аккумулирует в себе знания и терминологию предыдущих уроков. Твои знания еще не достаточно сжаты в "оперативке", чтобы свободно ими оперировать образно-виртуально и ты не успеваешь за логикой подачи информации - лист бумаги, код - рисуй и делай свою "область тьмы" светлой! Сергей - киберхристос - такие знания за какой-то лайк)))

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      @@Heart_of_the_world_1985 "По отдельному слову" реально работает. Когда понимаешь каждое отдельное слово, нетрудно понять смысл предложения. А потом эти предложения вместе собираются во вполне осмысленный текст.

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @gritsienkooleg3447
    @gritsienkooleg3447 5 років тому

    Спасибо огромное за ваши видео, приятно, когда не упускают ни одного момента и досконально объясняют, запоминается лучше, понятно всЁ!

    • @Isturfore
      @Isturfore 7 місяців тому

      как успехи

  • @jane5082
    @jane5082 9 місяців тому

    Спасибо, очень понятный разбор!!

  • @able_channel4811
    @able_channel4811 2 роки тому

    Дядя я тебя обожаю. Оооооочень помог. Спасибо огромное. Лучше курса на ютубе чем ваша работа - нет

  • @СергейПетров-б1ф
    @СергейПетров-б1ф 4 роки тому

    Зашел спустя полгода после первого просмотра данного видео, теперь все понятно, спасибо, Сергей!

  • @sorrynomorenickname
    @sorrynomorenickname 4 роки тому

    Очень толково объяснено. Тем, кому сложно - посоветую изучить работу с указателями, в рамках того же языка Си.

  • @МихаилКрылов-п5ч
    @МихаилКрылов-п5ч 3 роки тому +1

    Ну сложно для восприятия, но после второго просмотра стало всё ясно. Спасибо большое за урок

  • @archiechellaut9483
    @archiechellaut9483 3 роки тому

    Большое спасибо вам за урок и прекрасное пояснение, Сергей!

  • @svitlanashpilova6407
    @svitlanashpilova6407 3 роки тому

    Действительно тяжелый урок. Благодарю.

  • @sergey_savinov
    @sergey_savinov 10 місяців тому

    Февраль 2024, очень понятно и приятно изучать плюсы по вашим видео. Некторые моменты очень удивительны после питона:)

  • @ИльяЯкобсон-ю7ж
    @ИльяЯкобсон-ю7ж 4 роки тому

    Это гениально. Настолько детальный сложный разбор и ты реально смог это объяснить. Спасибо большое!
    Было сложно. Прервался на третьей итерации просмотра=)

  • @qIKraytonIp
    @qIKraytonIp 5 років тому +3

    2дня сидел учил, пересматривал , но в итоге понял , спасибо!

  • @viktort9326
    @viktort9326 4 роки тому +9

    28:31 Для чего тут мы используем this->date=new int [other.Size] ; ?? Нельзя ли просто написать this->data= new int [ this->Size] ? Или this->data= new int [ Size] ? Ведь мы уже выше в коде скопировали this->Size = other.Size

    • @ilya4068
      @ilya4068 2 роки тому

      можно , просто он это писал раньше чем this->Size->other.Size

  • @dekstor5657
    @dekstor5657 6 років тому

    Непростой урок, но ближе к середине я понял к чему это конструктор. Спасибо за урок!

  • @dimasavukov6230
    @dimasavukov6230 6 років тому +23

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

    • @Wardriving666
      @Wardriving666 5 років тому +9

      Ну как, устроился?

    • @паносниглайдер
      @паносниглайдер 4 роки тому

      @@Wardriving666 А ведь он до сих пор не ответил

    • @Wardriving666
      @Wardriving666 4 роки тому

      @@паносниглайдер Я не сомневался что не ответит >:)

    • @gamepwoandrey
      @gamepwoandrey 3 роки тому

      чел ты как там? устроился или нет?

    • @geroitruda8157
      @geroitruda8157 2 роки тому

      @@gamepwoandrey , походу так его никто и не взял на работу.

  • @SmileTop8067
    @SmileTop8067 6 років тому +3

    спасибо за подобного рода уроки)

  • @Евгений-ф9я3о
    @Евгений-ф9я3о 6 років тому +178

    Ничего не понял. Буду пересматривать.

    • @vladivchenko873
      @vladivchenko873 4 роки тому +3

      VSЁ мне понадобилось пересмотреть 3-4 раза чтобы что-то понять)

    • @lacklacktriplehack4174
      @lacklacktriplehack4174 4 роки тому +6

      я конечно не гений и никогда себя таковым не считал
      но чего сложного то?
      перед просмотром ролика аж на пол часа решил глянуть комменты мол "ёмана щито происходит" подумал блин походу будет сложно
      посмотрел на одном дыхании и вообще не выкупил где же cyko это сложно то?

    • @Евгений-ф9я3о
      @Евгений-ф9я3о 4 роки тому +9

      @@lacklacktriplehack4174 ну молодец, что еще скажешь то тебе))

    • @Evgeny..
      @Evgeny.. 4 роки тому

      Посмотрел 2 раза и не до конца понял)

    • @Никита-с9г
      @Никита-с9г 7 місяців тому

      ​@@lacklacktriplehack4174держи в курсе. Если что ты остался таким же долбоебом даже поняв этот ролик

  • @raztarg4adchadov914
    @raztarg4adchadov914 2 роки тому

    Здравия всем родам!!! Ёлы палы. 2 дня разбирал этот урок. Мудрость приходит с годами, но в основном годы приходят одни))

  • @rayansamerkhanov5438
    @rayansamerkhanov5438 3 роки тому

    Спасибо, ты просто бог по объяснению. Все очень понятно и круто!

  • @flepjack
    @flepjack 3 роки тому

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

  • @АртемБатьков-м6ю
    @АртемБатьков-м6ю 2 роки тому +1

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

  • @rearden3820
    @rearden3820 5 років тому +2

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

  • @s4ymyn4me44
    @s4ymyn4me44 Рік тому +5

    Для тех, кто не понял: в случае, когда мы имеем дело с динамическим массивом (а не просто с какой-нибудь переменной), конструктор копирования по умолчанию копирует поля объектов (неглубоко), т.е. указателю на массив нового объекта присвоится адрес массива скопированного объекта, а фактически мы будем иметь один и тот же массив. В таком случае у нас после выхода из области видимости функции будет вызываться деструктор для обоих объектов, но очищать память они , что приведет к ошибке. Чтобы этого избежать, нам нужно написать конструктор копирования (глубокого) такой, что копироваться будет не указатель на один и тот же массив, а создаваться новый массив со скопированными из него элементами, тогда деструктор скопированного объекта будет удалять "свой" массив.

    • @ДашаКолпакова-й4ш
      @ДашаКолпакова-й4ш 10 місяців тому

      .

    • @Никита-с9г
      @Никита-с9г 7 місяців тому +1

      Конч, ты не умеешь объяснять, куда ты лезешь. Поля, глубокого, неглубокого- все термины впихнул, чтоб усложнить. Иди пиши свой говнокод лучше

  • @androidpasha
    @androidpasha 3 роки тому +2

    5:08 Честно пишу ответ что происходит: выделяется память в которую копируется значение переменной и с новой переменной работает класс(функция)

  • @rizabekutegenov5423
    @rizabekutegenov5423 5 років тому +2

    Спасибо вам огромное!

  • @rostyslavklyba1746
    @rostyslavklyba1746 6 років тому

    Спасибо Вам Сергей, хорошие уроки. Этот урок довольно сложный, нужно смотреть несколько раз.

  • @circularka9513
    @circularka9513 6 років тому

    Спасибо огромное. Даже не знаю, как бы я понял эту тему без вашего объяснения

  • @seezentzort
    @seezentzort 4 роки тому +3

    самый лучший канал!

  • @artembystrov1113
    @artembystrov1113 3 роки тому

    Довольно легко если все уроки смотреть, спасибо за ролик!)

  • @РоманОрлов-у4ю
    @РоманОрлов-у4ю 6 років тому

    Спасибо Вам большое за Ваш огромный труд!

  • @kaliban12
    @kaliban12 Рік тому +6

    Работаю в студио 2022 и на этапе, когда создаем функцию Foo2(), у меня нет второго вызова деструктора, синтаксис абсолютно одинаковый, но при этом. при прохождении return temp; он не заходит в деструктор еще раз.

    • @sae9016
      @sae9016 Рік тому

      Скорей всего просто обнова и тут работает по другому у меня тоже самое . просто до этого в кометах и про strcat_s писали

    • @ДенисКлаузов-в4и
      @ДенисКлаузов-в4и 8 місяців тому

      такая же проблема. Надо посмотреть при создании динамического массива будет ли ошибку показывать или нет.

    • @Isturfore
      @Isturfore 7 місяців тому

      + также

  • @panschindler9370
    @panschindler9370 4 роки тому

    С первого раза понял на пол шишечки, а со второго на все 100!! Спасибо, люблю вас, Сергей))

    • @wasony.126
      @wasony.126 4 роки тому

      И что ты понял поделись

  • @PavlikJuravlik_o
    @PavlikJuravlik_o 5 років тому

    Огромное спасибо, все очень доходчиво! При том, что до этого я работал только на С и плюсов не касался все понял. Первый видос из которого смог что-то вынести

  • @ДмитрийБузницкий-б3н

    Спасибо! Сложный урок, но интересный. Думаю еще раз пересмотрю и с отладчиком пройдусь повторно.

  • @bulba1995
    @bulba1995 2 роки тому

    Поставил на паузу и понял что я ошибся после просмотра 34 видео . Попутал все . Но спасибо постараемся запомнить. Уверенн что еще буду пересматривать много раз ваши видео .

  • @ФишкиОтАйтишника
    @ФишкиОтАйтишника 6 місяців тому

    Спасибо огромное, ждём новых уроков!

  • @lexus952610
    @lexus952610 3 роки тому

    На третий раз понял спасибо)+ отдохну перед третьим просмотром)

  • @youjustillusion536
    @youjustillusion536 4 роки тому

    Создается копия той же переменной, которую мы передаем)
    Класс!

  • @alexanderwagner8199
    @alexanderwagner8199 Рік тому

    Урок в 30 минут пролетел как за 5. Очень круто.

    • @Empty_line
      @Empty_line 10 місяців тому

      28:15 Почему в указателе data ничего нету если только что там было значение 10?

  • @vadimturok59
    @vadimturok59 4 роки тому

    Пересмотрел видео 2 раза, со второго раза наконец-то понял, для меня как новичка сложновато но справился

  • @НиколайПокровский-р6в

    Огромное спасибо!)

  • @BobTheBuilder_2334
    @BobTheBuilder_2334 7 років тому +84

    ох как тяжко заходило)

    • @Kokurorokuko
      @Kokurorokuko 3 роки тому

      @@fodermoll7128 сеньор-помидор

  • @ton12047
    @ton12047 Рік тому

    Ну что сказать? Посмотрел первый раз - кое-что стало ясно, до далеко не все. Очевидно надо еще раз или два посмотреть. Тема действительно не очень простая. Очень очень жаль что нет заданий которые могли бы хоть как-то закрепить материал. Пытаюсь вспомнить что, и зачем я изучал в районе 40-х или 50-х уроков и ничего толком не помню. Хотя бы 100-200 задачек бы на этот курс , был бы от курса совсем другой прок. Ну огромнейшая благодарность автору! Зачем мне все эти знания я и сам не знаю, но учиться по этому курсу-большое удовольствие.

    • @Empty_line
      @Empty_line Рік тому

      16:03 Что это значит😶?

  • @aln9391
    @aln9391 6 років тому +2

    Супер!!! Спасибо.

  • @parampampam4477
    @parampampam4477 5 років тому

    Большое спасибо за уроки

  • @almatytelecom1
    @almatytelecom1 4 роки тому

    я все понял, но до этого читал много , и в книге было непонятно.... но с помощью ваших уроков . Все уложилось. Самое главное понимать смысл передачи и возврата по ссылке. Ну и по значению... Особенно это касается указателя this.
    А и еще я так понял отладчик это пипец тема для изучения внутренних принципов работы компилятора!

  • @SweeTShooT
    @SweeTShooT 5 років тому

    огромное спасибо за проделанную работу

  • @oraclevb5430
    @oraclevb5430 4 роки тому

    тема сложная но обесняете вы очень хорошо со 2 попытка получилось понять спасибо вам огромное

  • @ДмитроТкач-т2в
    @ДмитроТкач-т2в 2 роки тому

    Хочу сказать спасибо от всей души, в этом видео я нашёл решение проблемы которую не мог решить неделю, и это не шутка)

  • @bama2619
    @bama2619 3 роки тому

    Спасибо Узнал о потенциальной ошибке копирования Важный момент

  • @ИгорьСамонов-ж3д
    @ИгорьСамонов-ж3д 7 років тому

    5:00 Переменная value типа Myclass будет видна только в области видимости void Foo и не повлияет на другие переменные. Upd: не совсем верно написал) - на эту переменную value никак нельзя будет повлиять из другого места программы, кроме как в этой функции Foo.

  • @lidia7982
    @lidia7982 9 місяців тому

    Это реально легендарный урок! =)

  • @nightgames3158
    @nightgames3158 3 роки тому

    Вроде и понял,а вроде и нет.Мой мозг после этого сделал сальтуху.Ёщё пару раз посмотрю и пойму:)СПАСИБО ЗА УРОК)))

  • @АлександрЛитвинюк-х2ы

    Спасибо за знания !

  • @IldarAsm
    @IldarAsm 5 років тому +1

    3 раз смотрю, надеюсь сейчас пойму всё, спасибо за работу, Сергей. Вы супер

  • @dtactical
    @dtactical 3 роки тому

    Как же скрипят мозги, еле осилил. Огромнейшая благодарность за урок, Сергей!

  • @WHOAMI-oh3if
    @WHOAMI-oh3if 5 років тому +5

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

  • @kanfortdark9762
    @kanfortdark9762 6 років тому

    Посмотрел урок, ничего не понял. Посмотрел ещё раз, ничего не понял. Начал гуглить, ничего путного не нашёл. Спустя 4ч мучений и игр разума Я смог понять, как реализовать сам процесс копирования. Было сложновато понять, что такое other.Size, other.data. Очень долго не мог понять, что эта запись означает, и как она влияет на логику кода. В целом - самый качественный урок из всех, что Я нашёл. БОЛЬШОЕ СПАСИБО ЗА ТРУДЫ!!!

  • @ДенисРодионов-т9к

    Очень хорошие уроки!!!

    • @Empty_line
      @Empty_line Рік тому

      16:03 Что это значит😶?