私には3つの異なる基本クラスがあります。
class BaseA
{
public:
virtual int foo() = 0;
};
class BaseB
{
public:
virtual int foo() { return 42; }
};
class BaseC
{
public:
int foo() { return 42; }
};
次に、次のようなベースから派生します(A、B、またはCの代わりにXを使用します)。
class Child : public BaseX
{
public:
int foo() { return 42; }
};
3つの異なる基本クラスで関数はどのようにオーバーライドされますか?次の3つの仮定は正しいですか?他に注意点はありますか?
- BaseAでは、子クラスはコンパイルされず、純粋仮想関数は定義されません。
- BaseBでは、BaseB*またはChild*でfooを呼び出すときに、子の関数が呼び出されます。
- BaseCでは、Child *でfooを呼び出すときに子の関数が呼び出されますが、BaseB *では呼び出されません(親クラスの関数が呼び出されます)。