在我的一次采访中,我被问到了这个问题。 可以说我有基类“A”。有四个类“B”,“C”,“D”,“E”,它们来自“A”。现在我有一种方法在“D”和“E”类中很常见。我可以编写此方法的最小方法是什么,只有类“D”和“E”才能使用它们。 如果我在基类中编写它们,那么它将无理由地显示为“B”和“C”类。
答案 0 :(得分:0)
您从 A 派生出一个中间类,请为简单DECommon
调用它,这将为D
和E
提供此常用方法。接下来从中获取D
和E
。
class A {
}
class DECommon : public A {
public:
virtual void newMethodDE() {
// DO YOUR MAGIC HERE
}
}
class D : public DECommon {
}
class E : public DECommon {
}
因此,D和E仍将保留 is-a 与A的关系,而新常用方法的逻辑仅在DECommon
中间类中实现一次。