在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类型。

07-25 20:15