【发布时间】:2010-03-03 07:18:43
【问题描述】:
我希望这是一个简单的问题。
我可以继承一个抽象类和它的实现吗?也就是说,可以使以下工作吗?
class A {
virtual void func1() = 0;
}
class B {
void func1() { /* implementation here */ }
}
class C : public A, public B {
}
我已经尝试了一些变体,并且收到了抱怨 C 类中未实现的方法的编译错误。但是,如果我能做到这一点,我可以节省大量重复的代码。有可能吗?
我通过创建一个名为 D 的“复合类”解决了这个问题,它继承自 A 和 B,但包含先前包含在 B 中的实现代码。这使我的继承模型不太干净,但它解决了这个问题而无需重复代码。而且,正如我在下面的 cmets 中所指出的,它使我的命名约定非常粗俗。
class A {
virtual void func1() = 0;
}
class B {
// Other stuff
}
class D : public A, public B {
void func1() { /* implementation here */ }
}
class C : public D {
}
【问题讨论】:
标签: c++ abstract-class multiple-inheritance