Я знаю, что при динамическом связывании вы можете сделать:
Код: Выделить всё
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