2

在 C++ 中,我有一个FooA类和一个FooB类,它们都是基类Foo的子类。FooB 必须实现interface Bar。如果我只有一个指向 FooB 的 Foo 指针并希望使用 FooB 的 Bar 方法,我将不得不进行强制转换。但是,这似乎违反了polymorphism.

我想知道是否有更好的方法允许 FooB 实现 Bar 接口,而不强制所有 Foo 派生类也实现 Bar。

4

2 回答 2

2

重新设计你的课程。很有可能继承不是你在这里需要的。

理由:如果你在Foo某处有一个指针,那么它的所有者不需要知道它是指向Foo对象FooB还是任何其他派生对象——它只使用Foo功能,不了解实现。(这就是多态性的一般工作原理。)

换句话说:如果您有一个Foo指针并且它的用户仅依赖于 中的功能FooB,那么该指针首先应该是类型FooB

于 2012-10-31T13:21:47.247 回答
0

如果你只想使用 Foo 指针,并调用 Bar 方法,Foo 必须实现 Bar 接口。这是让编译器知道 Foo 对象可以使用此方法的唯一方法,当然无需强制转换。

于 2012-10-31T13:21:03.393 回答