c++ - 接口(interface)和子类

标签 c++ interface derived

在 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/

相关文章:

java - 使用 GlassFish 4 的 JNDI 独立应用程序的 EJB 3.1 问题

android - GLSurfaceView.Renderer - 无法解析为类型

c++ - 在派生类声明中使用 "Public"?

c++ - std::map::iterator 是否返回值的拷贝或值本身?

c++ - 如何管道/重定向 NCurse 命令的最终标准输出?

c# - 抽象类或接口(interface)。哪种方式是正确的?

c++ - 在模板中使用 typedef 和 typename

c++ - 为什么从 base 转换为 derived 会提供此功能?

c++ - 唯一指针 xvalue 语义?为什么 lambda f2 的行为与 lambda f1 不同?

c++ - 这个 C++ 标识符是如何未定义的?