У меня есть три разных базовых класса:
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 * (вызывается функция в родительском классе).