- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
class Base
{
void fooo() { ... }
};
class Derived
{
void fooo() { ... }
};
void DoSmth (Base& b)
{
b.fooo();
};
Derived d;
DoSmth(d); // полная статика, так что там внутри вызовется метод базы
void DoSmth (polymorth<Base>& b) // это структура, которая хранит ссылку на объект и ссылку на таблицу методов
{
b.fooo();
};
polymorth<Base>b = Derived();
// инициализация при объявлении, чтобы было понятно, сколько памяти выделить
// в структуре записалась таблица методов Derived
DoSmth(b); // вызовется метод наследника
...
// в конце вызывается деструктор наследника