在C++中,我有一个 FooA 类和一个 FooB 类,它们都是基类 Foo 的子类。 FooB必须实现interface
Bar 。如果我只有Foo指向FooB的指针,并希望使用FooB的Bar方法,则必须进行强制转换。但是,这似乎违反了polymorphism
。
我想知道是否有更好的方法允许FooB实现Bar接口(interface),而不强制所有Foo派生类也实现Bar。
最佳答案
重新设计您的类(class)。继承不是您在这里所需要的。
原理:如果您在某处有一个Foo
指针,那么它的所有者不需要知道它是指向Foo
对象还是FooB
或任何其他派生对象-它仅使用Foo
功能,而对实现一无所知。 (多态性通常就是这样工作的。)
换句话说:如果您有一个Foo
指针,并且它的用户仅依赖FooB
中的功能,则该指针首先应为FooB
类型。