Принцип работы полиморфизма при множественном наследовании

пишу класс, который реализует следующие интерфейсы:

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 указателя на таблицы переопределенных виртуальных методов с некоторым смещением относительно друг друга?


Ответы (0 шт):