Дочерний класс в памяти

Sdílet
Vložit
  • čas přidán 11. 09. 2024
  • Благодаря наследованию мы можем достичь полиморфизма, то есть мы можем передать объект дочернего класса там где от нас требуют родительского. Но как-же это происходит на самом деле в памяти?
    И оказывается что большинство компиляторов решают данную проблему очень просто, с помощью элегантной упаковки объекта, где один и тот-же адрес указывает как на объект суперкласса, так и на объект подкласса.

Komentáře • 31

  • @61rc
    @61rc Před 6 lety +1

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

  • @helga_volt
    @helga_volt Před 2 měsíci

    Спасибо большое за уроки и объяснения!

  • @Carnotaures
    @Carnotaures Před měsícem

    Видео уже 9 лет. Странно, что лайков так мало. Эту информацию мало где найти можно.

  • @user-ji6ip7ou8d
    @user-ji6ip7ou8d Před rokem +1

    Меня интересовало то как в аамяти реализовано наследование. Оказалось все очень просто: чтение наследника до конца розмера исходного класса

  • @mrspacer1
    @mrspacer1 Před 7 lety +1

    Спасибо за видео. Очень познавательно. Но поясните как быть с инстанцированием. Подходит ли эта логика для экземпляров классов? Интересно было бы узнать как располагается в памяти связка родитльский объект + экземпляр и дочерний объект + экземпляр.

  • @danilishei
    @danilishei Před 7 lety +1

    Вот это было полезно!

  • @АдильАдиль-ю9т

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

  • @Disorrder
    @Disorrder Před 6 lety

    А что, если мы переопределили виртуальный метод foo1 в классе В? Та функция, которая принимает в себя А будет выполнять перегруженный метод или базовый?

  • @FroL_Onn
    @FroL_Onn Před 6 lety

    А когда передача копированием осуществляется объекта дочернего класса в функцию, принимающую объекты родительского класса, копируется только "родительская" часть? Или весь объект дочернего класса целиком?

  • @denysrogovchenko2755
    @denysrogovchenko2755 Před 5 lety

    Не понял..... какие ещё ссылки на методы в объекте? По вашему так количество не виртуальных методов влияет на размер объекта класса?

  • @fusome
    @fusome Před 7 lety

    т.е. перекликаясь с предыдущим видео про наследование - дочерний класс не может быть преобразован в суперкласс или родительский потому, что родительский класс знает только свои объекты и методы, но ничего о дочерних(если очень грубо говоря), но дочерний, в свою очередь использует весь потенциал родительского, так как ему доступно все от родителя. Я правильно Вас понял?

  • @dutnum5766
    @dutnum5766 Před 8 lety

    Со множественным наследованием такое не прокатит.

  • @GameAnnouncements
    @GameAnnouncements Před 9 lety

    у меня есть вопрос.
    предположим у нас есть таймер который вызывает какую то функцию с интервалом скажем 10 вызовов в секунду (мы все знаем что таймер запускает вызываемые функции в новом потоке, но на каждый таймер может быть только 1 поток). И вдруг так получается что время исполнение вызываемой функции начинает превышать 1 секунду т.е. таймер больше не может вызывать функцию с интервалом 10 вызовов в секунду, после этого он начинает свои вызовы пушить в стек тем самым переполняя его. И так свои вопрос можно ли научить таймер в таким ситуациях пропускать вызовы функции ?

    • @VladimirMozhenkov
      @VladimirMozhenkov  Před 9 lety +1

      ヤンコヴィッチ アンドリー Возможно вам нужно что-то вроде "обещаний" czcams.com/video/K_AgeuYXmQ8/video.html
      Если нет, то оборачиваете вашу функцию внутри другой, которая проверяет если предыдущая завершилась, если нет, то просто сразу выходит. И именно эту функцию вы теперь запускаете.

  • @thomasmorgan9043
    @thomasmorgan9043 Před 9 lety

    Спасибо, интересные видео снимаете. Вы больше по системной части специализируетесь? Интересует дизассемблирование исходного кода на C/C++ представление ООП в ASM. К примеру, методы классов представляются так foo(this, a, b, c) В какой литературе можно почитать об этом подробнее?

    • @VladimirMozhenkov
      @VladimirMozhenkov  Před 9 lety

      Thomas Morgan Хмм. Я даже сам не знаю где такое искать. Не занимался дизассемблированием никогда. То что методы классов именно так выражаются я знал (есть языки, которые так всё ещё и делают).

    • @thomasmorgan9043
      @thomasmorgan9043 Před 9 lety

      Vladimir Mozhenkov а какой материал вы используете делая эти уроки? Также еще меня интересует заголовок exe файлов. Таблицы импорта, смещения и т. д. есть литература такая?

    • @VladimirMozhenkov
      @VladimirMozhenkov  Před 9 lety +1

      Thomas Morgan Совершенно разный, иногда узнаю что-то из общения с другими программистами, иногда из личной практики, иногда из документации...
      Бывает из книг, но в этом случае книг не было. Тут шло пересечение некоторых блогов программистов и (почти стыдно признаться) википедии.

  • @ShAdoo00w
    @ShAdoo00w Před 7 lety

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

    • @depishdev6942
      @depishdev6942 Před 7 lety

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

  • @yz4228
    @yz4228 Před 9 lety

    Владимир, запишите видео про кодировки(UTF-8, UTF-16, Unicode), что это такое, зачем придумали

    • @VladimirMozhenkov
      @VladimirMozhenkov  Před 9 lety

      Егор Захарик Что-то вроде такого: czcams.com/video/OG9gsFvGtSE/video.html

  • @dimalamashevski3670
    @dimalamashevski3670 Před 5 lety

    А если у нас есть класс С
    допустим Класс С и Б наследуют класс А то как это будет в памяти ?

  • @TwoSecondsB4
    @TwoSecondsB4 Před 8 lety +1

    Я один заметил пасхалку про Double D?

    • @mrshurukan
      @mrshurukan Před 7 lety

      В чем пасхалка заключается?

    • @threedking
      @threedking Před 6 lety

      Serious Sam Double D

  • @user-bz1pc4ju1z
    @user-bz1pc4ju1z Před 3 lety

    Интересно, у какого процента людей которые заахотели поблагодарить автора даннного видео, пропало желание это делать когда они поняли, что вводить руквизиты им надо вручную, переписывая их с экрана?
    Ох... автор еще и биткоин адрес указал)))
    PS. 8:25 - реквизиты

  • @jin_x_
    @jin_x_ Před 7 lety

    Добрый день, Володя.
    В первую очередь хочу сказать, что фраза «доброго времени суток» не совсем грамотная и некоторых людей (вроде меня) коробит. Лучше сказать «здравствуйте» или «добрый день» (в данном случае день - это и есть сутки).
    Ну и второе: в объекте все же присутствуют ссылки не на все методы (называть функциями их не совсем корректно), а только на виртуальные.
    А в целом хорошо рассказывайте! 👍

  • @kipitix
    @kipitix Před 5 lety

    1. Немонятно про какой язык идёт речь.
    2. Нет ни слова про виртуальность.

    • @asapdexter6410
      @asapdexter6410 Před 4 lety

      ооп это не язык программирования этот стиль программирования

  • @Ivan-qb7kc
    @Ivan-qb7kc Před 7 lety

    Мммм... функции не хранятся в объектах :/