在 C++ 中对假接口(interface)使用纯虚方法,当一个具体类派生自两个具有相同方法声明的“接口(interface)”时会发生什么?例如 X
子类 Iaaa
和 Ibbb
并实现一个方法virtual void setVisible(bool);
.
事实Iaaa
和 Ibbb
没有方法体比更经典的菱形继承场景更容易/更好,让 X::setVisible
成为两个 Iaaa::setVisible
的实现和 Ibbb::setVisible
?
我想用 C++ 来表达这个问题的一种更具体的方式是“当一个类使用 MI 派生自两个对纯虚方法具有相同签名的类时会发生什么”。
最佳答案
what happens when one class uses MI to derive from 2 classes which have identical signatures for a pure virtual method
行为定义明确。派生类覆盖方法将构成两个接口(interface)(即具有所有纯 virtual
函数的抽象 class
es)方法的实现。
另外,您的问题还有 2 点
- 菱形继承(钻石问题)还没有发生,因为你还没有
提到了
Iaaa
和Ibbb
的任何共同基础
- 你不能实现,2个
X::setVisible(bool)
具有相同的签名
关于c++ - 从两个 'interfaces' 实现相同的方法签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7872958/