在 C++ 中,我有一个FooA类和一个FooB类,它们都是基类Foo的子类。FooB 必须实现interface
Bar。如果我只有一个指向 FooB 的 Foo 指针并希望使用 FooB 的 Bar 方法,我将不得不进行强制转换。但是,这似乎违反了polymorphism
.
我想知道是否有更好的方法允许 FooB 实现 Bar 接口,而不强制所有 Foo 派生类也实现 Bar。
重新设计你的课程。很有可能继承不是你在这里需要的。
理由:如果你在Foo
某处有一个指针,那么它的所有者不需要知道它是指向Foo
对象FooB
还是任何其他派生对象——它只使用Foo
功能,不了解实现。(这就是多态性的一般工作原理。)
换句话说:如果您有一个Foo
指针并且它的用户仅依赖于 中的功能FooB
,那么该指针首先应该是类型FooB
。
如果你只想使用 Foo 指针,并调用 Bar 方法,Foo 必须实现 Bar 接口。这是让编译器知道 Foo 对象可以使用此方法的唯一方法,当然无需强制转换。