У меня есть три разных базовых класса:
class BaseA
{
public:
virtual int foo() = 0;
};
class BaseB
{
public:
virtual int foo() { return 42; }
};
class BaseC
{
public:
int foo() { return 42; }
};
Затем я получаю от базы следующим образом (заменяю X на A, B или C):
class Child : public BaseX
{
public:
int foo() { return 42; }
};
Как функция переопределяется в трех разных базовых классах? Верны ли мои три следующих предположения? Есть ли другие предостережения?
- С BaseA дочерний класс не компилируется, чистая виртуальная функция не определяется.
- В BaseB функция в дочернем элементе вызывается при вызове foo для BaseB * или Child *.
- В BaseC функция в дочернем классе вызывается при вызове foo в Child *, но не в BaseB * (вызывается функция в родительском классе).