Лекция 21. RTTI, dynamic_cast. Таблицы виртуальных функций

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

Мещерин Илья

Мещерин Илья

Күн бұрын

Пікірлер: 12
@MrKwoork
@MrKwoork 6 ай бұрын
00:00 продолжение про abstract class and pure virtual functions 8:47 dynamic cast 16:00 про RTTI 20:20 оператор typeid 27:30 ещё важное про dynamic cast 34:02 примеры когда static cast, reinterpret cast and dynamic cast дают разный результат 36:15 5.5 memory layout of polymorphic object 38:05 ABI (Application Binary Interface)
@Goodman-tz5ms
@Goodman-tz5ms 9 ай бұрын
Чистая доска, кайфанул)
@nicholasspezza9449
@nicholasspezza9449 9 ай бұрын
Оказывается эти губки не стирают маркеры, а просто размазывают их тонким слоем по доске. Получается доску потом нужно нормальной тряпкой мыть.
@КонстантинКрасильников-ю5г
@КонстантинКрасильников-ю5г Ай бұрын
А как dynamic_cast знает насколько сдвигать поинтер? Вы говорите что все оффсеты известны во время компиляции, однако тип объекта определяется во время исполнения, но в свою очередь оффсет зависит от типа объекта.
@mesyarik
@mesyarik Ай бұрын
@@КонстантинКрасильников-ю5г dynamic_cast в рантайме смотрит, какой это тип, и зная тип переменной и настоящий тип, в рантайме понимает как сдвинуть
@КонстантинКрасильников-ю5г
@КонстантинКрасильников-ю5г Ай бұрын
@mesyarik то есть нужно дополнительно хранить все возможные оффсеты для приведения между типами и из них выбирать подходящий?
@mesyarik
@mesyarik Ай бұрын
@@КонстантинКрасильников-ю5г кажется, достаточно хранить в таблице оффсет от начала объекта, а также для каждого типа помнить, с каких оффсетов начинаются все подобъекты в нем
@astr0gamingchannel374
@astr0gamingchannel374 15 күн бұрын
Ну оффсеты и правда должны быть известны, мне кажется. Мы же, когда определяем класс, явно определяем его структуру в памяти, думаю компилятор сможет вычислить оффсеты до родительских классов. Могу ошибаться)
@КириллЧе-я5ы
@КириллЧе-я5ы Жыл бұрын
То есть динамик каст нужен в принципе, если нет реализации определённого поведения в том классе, от которого кастуешь, с целью воспользоваться этим поведением после каста?.. и вообще если пользуешься этим кастом, в программе что-то не так?.. и стоит пересмотреть архитектуру…
@vladimirsemenchik2193
@vladimirsemenchik2193 Жыл бұрын
47-я минута. На этапе компиляции нет ни каких адресов. Компилятор не работает с адресами. Все адреса появляются только на этапе линковки.
@mesyarik
@mesyarik Жыл бұрын
Это правда, и я об этом даже делаю оговорку на 47:03 :) Но для упрощения, говоря "компилятор", люди (и я в том числе) часто имеют в виду весь конвейер g++ (препроцессор->компилятор->ассемблер->линковщик). Ясно, что настоящий компилятор делает не всё из сказанного, но для понимания на данном уровне это не имеет значения.
@nicholasspezza9449
@nicholasspezza9449 9 ай бұрын
Подтверждаю, лектор об этом сказал, поэтому ваша ремарка беспочвенна.
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН
Sigma Kid Mistake #funny #sigma
00:17
CRAZY GREAPA
Рет қаралды 30 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
Собеседование Junior C++
45:32
Ambushed Raccoon
Рет қаралды 129 М.
Как устроена сирена воздушной тревоги?
25:34
Музей Подземная Москва — Live
Рет қаралды 137 М.
Лекция 50. SFINAE-friendliness. Constraints and requirements
1:33:23
Мещерин Илья
Рет қаралды 1,7 М.
С++ 12. RTTI, dynamic_cast, vtables.
1:30:35
Лекторий ФПМИ
Рет қаралды 7 М.
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН