假设我们有这个:
class A
{
public:
virtual void foo() = 0;
};
class B: public A
{
public:
virtual void foo() = 0;
};
编译器没有抛出错误,我猜是因为 B 也是一个抽象类,因此它不必foo从 A 实现。但是这样的构造是什么意思?
1) B 是否foo对 A 隐藏foo?
2)从B继承的第一个类不是抽象类,它是否必须提供两个实现,例如:
class C: public B
{
public:
virtual void A::foo() {};
virtual void B::foo() {};
};
编译器仅在B::foo()缺少 的实现时才会抱怨,但不会抱怨缺少A::foo().
总而言之:这是一种隐藏纯虚方法的方法吗?