Таблицы виртуальных функций: полиморфизм в С++ под капотом

  Рет қаралды 5,768

Vladimir Balun - Programming

Vladimir Balun - Programming

Күн бұрын

Пікірлер: 31
@fisyamaloy1754
@fisyamaloy1754 2 жыл бұрын
Про дивертуализацию у компилятора тоже можно упомянуть. В некоторых случаях, даже когда мы пытаемся вызвать вирутальную функцию, скачка в таблицу виртуальных функций не будет в рантайме, вызовется как обычная
@vladimir_balun_programming
@vladimir_balun_programming 2 жыл бұрын
Согласен, видео снято давно - про это тогда не знал
@holaamigogringoz
@holaamigogringoz 2 жыл бұрын
Владимир, я ничего не понял, но ты крут!
@vladimir_balun_programming
@vladimir_balun_programming 2 жыл бұрын
Спасибо!
@daps9516
@daps9516 Жыл бұрын
Понял 90%
@yanparasyuk8782
@yanparasyuk8782 3 жыл бұрын
Где Вы получал свои знания ? Что за книги или сайты которые так подробно объясняют. Спасибо большое за видео, жду новые!
@vladimir_balun_programming
@vladimir_balun_programming 3 жыл бұрын
Много читал, много смотрел видео, много практиковался. Потом, когда все это объединяется - получается очень интересная картинка в голове)
@Ланс-м1в
@Ланс-м1в 3 жыл бұрын
Найдите pdf "Multiple inheritance for C++" Bjarne Straustrup. В google одно из первых выдает документ. При начальном знании языка, посидеть два вечера с переводчиком в свободное время.
@Ланс-м1в
@Ланс-м1в 3 жыл бұрын
Или статью "Multiple inheritance considered useful". Не помню автора.
@vladimir_balun_programming
@vladimir_balun_programming 3 жыл бұрын
@@Ланс-м1в спасибо, отличный материал, раньше не встречал
@Ланс-м1в
@Ланс-м1в 3 жыл бұрын
Спасибо за видео. Повторить было полезно. Очень много времени в свое время потратил, чтобы найти информацию.
@nicholasspezza9449
@nicholasspezza9449 7 ай бұрын
Почему скобки не по код-стайлу? В яндексе код-стайл, чтоб открывающая скобка была на одной строке с сигнатурой функции
@ShadowFiend-zg4fe
@ShadowFiend-zg4fe 2 жыл бұрын
Да ладно ? Прям в стандарте написано про очередность функций в vtable ? Стандарт вообще про vtable ничего не знает, это детали имплементации. То что clang gcc msvc это так имплементирует, не означает что нельзя по другому. Например можно хранить vtable прям в объекте, чтобы не делать дереференс на каждый виртул колл, теряя perfomance, более того в некоторых старых компляторах есть такая имплементация, и это соответсвтует стандарту. Стыдно учить тому, в чём сам не разбираешься ! Еще и про UB что то заикнулся. У стандарта нет ABI(Application Binary Interface), он для разных архитектур пишется.
@Sergey-mq3ol
@Sergey-mq3ol 2 жыл бұрын
Душнила Что ты тут делаешь если все знаешь
@ShadowFiend-zg4fe
@ShadowFiend-zg4fe 2 жыл бұрын
@@Sergey-mq3ol В рекомендациях мусор этот вылез. Тебе в фронтенд, а не в плюсы если для тебя душно это. Если данный персонаж берётся за обучение других людей, то пусть хоть немного разберётся в теме.
@Sergey-mq3ol
@Sergey-mq3ol 2 жыл бұрын
@@ShadowFiend-zg4fe Лан, согласен, что чел не топ, извиняюсь, ты прав что обоссал его
@princessmary5556
@princessmary5556 11 ай бұрын
Вы пишете: *можно хранить vtable прям в объекте, чтобы не делать дереференс на каждый виртул колл, теряя perfomance* Это чушь.
@Kalin_cheetah
@Kalin_cheetah Жыл бұрын
А как устроена сама vfptr? Это указатель ведет к таблице. А таблица сама это что, объект какого-то системного класса?
@rafk5341
@rafk5341 3 ай бұрын
Массив указателей на функции + ртти инфа про класс u64** vftable; Вызвать функцию из таблицы можно вот так: void(*fn)(void*) = reinterpret_cast(vftable[0]); fn(this); На эту тему есть пару лекций у Ильи Мещерина, там доходчиво все объясняется
@ОтважныйНУБ
@ОтважныйНУБ 3 жыл бұрын
В идеале конечно бы с дебагингом объяснять, а то уже под конец запутался )
@vladimir_balun_programming
@vladimir_balun_programming 3 жыл бұрын
Спасибо, в будущем подумаю над этим!
@nicholasspezza9449
@nicholasspezza9449 7 ай бұрын
обж дамп сделай и наслаждайся
@ОлегСамохин-ъ9о
@ОлегСамохин-ъ9о 3 жыл бұрын
"как яд на всех потомков", на всех непосредственных потомков? или на прямых тоже?)
@vladimir_balun_programming
@vladimir_balun_programming 3 жыл бұрын
Что имеется в виду под прямыми и непосредственными?
@ОлегСамохин-ъ9о
@ОлегСамохин-ъ9о 3 жыл бұрын
@@vladimir_balun_programming , имею ввиду ТОЛЬКО на первых, в которых не используется слово virtual, или все таки на тех кто отнаследуется от первых потомков(без слова virtual у метода) тоже?
@ОлегСамохин-ъ9о
@ОлегСамохин-ъ9о 3 жыл бұрын
@@vladimir_balun_programming а терминологию "непосредственные" и "прямые" взял от начальников. Условно: Непосредственный - тот кому я отчитываюсь, показываю результат работы Прямой - начальник начальника, глава отдела
@ТоляПечкин-в7в
@ТоляПечкин-в7в 2 жыл бұрын
на всех-всех
@nicholasspezza9449
@nicholasspezza9449 7 ай бұрын
можно даже через потомков перепрыгивать, если в каком-то такой функции нет, а в следующем есть, то она будет виртуальной.
@Ultath
@Ultath 10 ай бұрын
Объясняющему бы научиться слушать. Ни разу не дали человеку сформулировать вопрос. У Вас цель - научить или своими знаниями блеснуть?)) Как только ключевые слова слышите,, сразу перебиваете очередной попыткой рассказать, довольно сбивчивой, как будто боитесь, что вопрос окажется о том, чего Вы не знаете.
Курс по ООП в С++: введение
18:06
Владимир Балун
Рет қаралды 4,6 М.
Хэш-таблицы за 10 минут
13:01
Николай Тузов — Golang
Рет қаралды 134 М.
Арыстанның айқасы, Тәуіржанның шайқасы!
25:51
QosLike / ҚосЛайк / Косылайық
Рет қаралды 665 М.
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 19 МЛН
The evil clown plays a prank on the angel
00:39
超人夫妇
Рет қаралды 46 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 10 МЛН
Указатели в С++ простыми словами
10:08
Владимир Балун
Рет қаралды 12 М.
Все о массивах и слайсах в Go в одном видео
1:28:31
Владимир Балун
Рет қаралды 10 М.
Уроки С++ Стек, Куча, Указатели (11)
26:06
Software Development
Рет қаралды 41 М.
Арыстанның айқасы, Тәуіржанның шайқасы!
25:51
QosLike / ҚосЛайк / Косылайық
Рет қаралды 665 М.