Например, у меня есть два "интерфейса" и тип класса:
class IPlugin
{
public:
virtual void Load(void) = 0;
virtual void Free(void) = 0;
};
class IFoo
{
public:
virtual void Foo(void) = 0;
};
class Tester: public IPlugin, public IFoo
{
public:
Tester() {};
~Tester() {};
virtual void Load()
{
// Some code here
}
virtual void Free()
{
// Some code here
}
virtual void Foo(void)
{
// Some code here
}
};
Какая структура vtab на самом деле имеет, например, тип Tester
? И как будет действовать оператор dynamic_cast
(я имею в виду, как оператор dynamic_cast
будет сканировать vtab для преобразования действительного ссылочного типа) в выражении:
Tester* t = new Tester();
IPlugin* plg = dynamic_cast<IPlugin*>(t);
IFoo* f = dynamic_cast<IFoo*>(plg);
Заранее спасибо!