Дочерний класс в памяти
HTML-код
- Опубликовано: 7 сен 2024
- Благодаря наследованию мы можем достичь полиморфизма, то есть мы можем передать объект дочернего класса там где от нас требуют родительского. Но как-же это происходит на самом деле в памяти?
И оказывается что большинство компиляторов решают данную проблему очень просто, с помощью элегантной упаковки объекта, где один и тот-же адрес указывает как на объект суперкласса, так и на объект подкласса.
Володя отличный совет -это сделаю сбор денег через сервисы помощи. Так делают различные музыкальные стримеры. И денежку с карты можно перевести и комиссия ниже будет. Вы в свою очередь ни чего не теряете. Большое спасибо за уроки
Спасибо большое за уроки и объяснения!
Видео уже 9 лет. Странно, что лайков так мало. Эту информацию мало где найти можно.
Меня интересовало то как в аамяти реализовано наследование. Оказалось все очень просто: чтение наследника до конца розмера исходного класса
Спасибо за видео. Очень познавательно. Но поясните как быть с инстанцированием. Подходит ли эта логика для экземпляров классов? Интересно было бы узнать как располагается в памяти связка родитльский объект + экземпляр и дочерний объект + экземпляр.
Вот это было полезно!
Владимир было бы очень классно если бы вы указали в каких примерно языках происходит вот такое вот внутреннее устройство объектов в памяти,Спасибо
А что, если мы переопределили виртуальный метод foo1 в классе В? Та функция, которая принимает в себя А будет выполнять перегруженный метод или базовый?
т.е. перекликаясь с предыдущим видео про наследование - дочерний класс не может быть преобразован в суперкласс или родительский потому, что родительский класс знает только свои объекты и методы, но ничего о дочерних(если очень грубо говоря), но дочерний, в свою очередь использует весь потенциал родительского, так как ему доступно все от родителя. Я правильно Вас понял?
Спасибо, интересные видео снимаете. Вы больше по системной части специализируетесь? Интересует дизассемблирование исходного кода на C/C++ представление ООП в ASM. К примеру, методы классов представляются так foo(this, a, b, c) В какой литературе можно почитать об этом подробнее?
Thomas Morgan Хмм. Я даже сам не знаю где такое искать. Не занимался дизассемблированием никогда. То что методы классов именно так выражаются я знал (есть языки, которые так всё ещё и делают).
Vladimir Mozhenkov а какой материал вы используете делая эти уроки? Также еще меня интересует заголовок exe файлов. Таблицы импорта, смещения и т. д. есть литература такая?
Thomas Morgan Совершенно разный, иногда узнаю что-то из общения с другими программистами, иногда из личной практики, иногда из документации...
Бывает из книг, но в этом случае книг не было. Тут шло пересечение некоторых блогов программистов и (почти стыдно признаться) википедии.
А когда передача копированием осуществляется объекта дочернего класса в функцию, принимающую объекты родительского класса, копируется только "родительская" часть? Или весь объект дочернего класса целиком?
у меня есть вопрос.
предположим у нас есть таймер который вызывает какую то функцию с интервалом скажем 10 вызовов в секунду (мы все знаем что таймер запускает вызываемые функции в новом потоке, но на каждый таймер может быть только 1 поток). И вдруг так получается что время исполнение вызываемой функции начинает превышать 1 секунду т.е. таймер больше не может вызывать функцию с интервалом 10 вызовов в секунду, после этого он начинает свои вызовы пушить в стек тем самым переполняя его. И так свои вопрос можно ли научить таймер в таким ситуациях пропускать вызовы функции ?
ヤンコヴィッチ アンドリー Возможно вам нужно что-то вроде "обещаний" ruclips.net/video/K_AgeuYXmQ8/видео.html
Если нет, то оборачиваете вашу функцию внутри другой, которая проверяет если предыдущая завершилась, если нет, то просто сразу выходит. И именно эту функцию вы теперь запускаете.
Владимир, здравствуйте. Следуя видео, верно ли суждение, что объект дочернего класса занимает больше памяти чем объект родительского (если предположить, что все свойства и методы публичные)? Спасибо!
публичные или приватные, не влияет на занимаемую память, дочерний класс будет больше родительского.
Не понял..... какие ещё ссылки на методы в объекте? По вашему так количество не виртуальных методов влияет на размер объекта класса?
Владимир, запишите видео про кодировки(UTF-8, UTF-16, Unicode), что это такое, зачем придумали
Егор Захарик Что-то вроде такого: ruclips.net/video/OG9gsFvGtSE/видео.html
Интересно, у какого процента людей которые заахотели поблагодарить автора даннного видео, пропало желание это делать когда они поняли, что вводить руквизиты им надо вручную, переписывая их с экрана?
Ох... автор еще и биткоин адрес указал)))
PS. 8:25 - реквизиты
Со множественным наследованием такое не прокатит.
А если у нас есть класс С
допустим Класс С и Б наследуют класс А то как это будет в памяти ?
Я один заметил пасхалку про Double D?
В чем пасхалка заключается?
Serious Sam Double D
Добрый день, Володя.
В первую очередь хочу сказать, что фраза «доброго времени суток» не совсем грамотная и некоторых людей (вроде меня) коробит. Лучше сказать «здравствуйте» или «добрый день» (в данном случае день - это и есть сутки).
Ну и второе: в объекте все же присутствуют ссылки не на все методы (называть функциями их не совсем корректно), а только на виртуальные.
А в целом хорошо рассказывайте! 👍
1. Немонятно про какой язык идёт речь.
2. Нет ни слова про виртуальность.
ооп это не язык программирования этот стиль программирования
Мммм... функции не хранятся в объектах :/