Принцип работы полиморфизма при множественном наследовании
пишу класс, который реализует следующие интерфейсы:
class IFunction{
public:
virtual double operator()(double x) = 0;
virtual ~IFunction(){}
};
class IDrawable{
public:
virtual void draw() = 0;
virtual ~IDrawable(){}
};
Cам класс:
class SpecialFunction:public IDrawable,public IFunction{
public:
double operator()(double ) override;
void draw() override;
SpecialFunction(const std::vector<IFunction*>& ,double,double);
~SpecialFunction() override;
private:
std::vector<IFunction*> functions;
double start,end;
};
Интересует как в таком случае работает полиморфизм(каким образом создается таблица виртуальных функции, поля указывающие на нее,как происходит вызов функций через указатель на интерфейс ),правильно ли я предполагаю, что в этом классе создаются 2 указателя на таблицы переопределенных виртуальных методов с некоторым смещением относительно друг друга?