假设我们有这个:
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()
.
总而言之:这是一种隐藏纯虚方法的方法吗?