【发布时间】:2013-03-13 14:06:07
【问题描述】:
我想问一个关于派生类案例中的编程风格的问题:
class A
{
public:
virtual foo1()=0;
}
class B: public A
{
public:
virtual foo1();
virtual foo2();
}
class C: public A
{
public:
virtual foo1();
}
int main() {
B mB();
C mC();
mB.foo2() //OK!
mC.foo2() // obviously, it is not correct
return 0;}
因此,派生类的公共方法应该少于或等于抽象基类吗?
如果派生类需要更多方法,这些方法应该是私有的吗?
【问题讨论】:
-
创建派生类的原因之一是添加功能。这样做并坚持外部客户端不能使用附加功能是没有意义的。
-
您在这里看到的是interface 的示例。接口用于向类添加功能。所以 A 通过添加
foo1功能来完成它的工作。
标签: c++ coding-style polymorphism