これがあるとしましょう:
class A
{
public:
virtual void foo() = 0;
};
class B: public A
{
public:
virtual void foo() = 0;
};
コンパイラはエラーをスローしません。Bも抽象クラスであり、fooAから実装する必要がないためだと思います。しかし、そのような構造はどういう意味ですか?
1)fooBからはAから隠れfooますか?
2)Bを継承し、抽象クラスではない最初のクラスは、次のような2つの実装を提供する必要がありますか。
class C: public B
{
public:
virtual void A::foo() {};
virtual void B::foo() {};
};
コンパイラは、の実装が欠落している場合にのみ文句を言いますが、の実装B::foo()が欠落していることについては文句を言いませんA::foo()。
全体として:これは純粋仮想メソッドを隠す方法ですか?