Простая иерархия виртуальная функция:наследование классов и таблица
class X
{
public:
virtual void test(){ printf("x\n");}
};
class Y : public X
{
public:
virtual void test() { printf("y\n");}
};
class Z : public Y
{
public:
void test() { printf("z\n");}
};
Если я создаю экземпляр г я бы ожидать, что виртуальные таблицы этого экземпляра будет указывать на функцию тестирования Заболоцкого независимо от того, на базе которого я собираюсь лить его в:
Z myZ;
myZ.test();
((Y)myZ).test();
Что мне здесь не хватает?
Динамическая отправка происходит только при обращении к объекту с помощью ссылки или указателя. – StoryTeller