在 C++ 中,我有一个类 FooA 和一个 FooB 类,它们都是基类 Foo 的子类。 FooB 必须实现接口(interface)
Bar。如果我只有一个指向 FooB 的 Foo 指针,并且希望使用 FooB 的 Bar 方法,那么我必须进行强制转换。然而,这似乎违反了多态性
。
我想知道是否有更好的方法来允许 FooB 实现 Bar 接口(interface),而不强制所有 Foo 派生类也实现 Bar。
最佳答案
重新设计你的类(class)。继承很可能不是您在这里所需要的。
理由:如果您有 Foo
指针某处,那么它的所有者不需要知道它是否指向 Foo
对象或 FooB
或任何其他派生对象 - 它仅使用 Foo
功能,不了解实现。 (这就是多态性的一般工作方式。)
换句话说:如果你有 Foo
指针及其用户仅依赖于 FooB
中的功能,那么该指针的类型应为 FooB
首先。
关于c++ - 接口(interface)和子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13158901/