Как динамическое связывание работает на уровне компилятора? [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
 Как динамическое связывание работает на уровне компилятора? [дубликат]

Сообщение Anonymous »

Я знаю, что при динамическом связывании вы можете сделать:

Код: Выделить всё

A a(1,2);
// B extends the base class A
B b(1,3);
A* a_ptr = &a;
A* a_ptr2 = &b;

a_ptr->test()
// calls the virtual method test() overridden in class B
a_ptr2->test()
На уровне компилятора A* означает, что для объекта размера A зарезервировано пространство, но что, если B имеет новые члены и они используются в переопределенном методе test()? Это должно означать, что зарезервировано дополнительное пространство, если присвоение происходит объекту типа B, верно?
Я читаю о динамическом связывании в книге.

Подробнее здесь: https://stackoverflow.com/questions/790 ... iler-level

Вернуться в «C++»