2017-08-06 153 views
1

我在我的一次采访中被问到了这个问题。 可以说我有基类“A”。有四类“B”,“C”,“D”,“E”是从“A”派生的。现在我有一种在“D”和“E”类中很常见的方法。我可以写这种方法的最低限度是什么,只有类“D”和“E”可以使用它们。 如果我将它们写入基类,那么无类别的“B”和“C”类将可见。解决方案重复代码

+0

你可以把它放在包的私人范围内(以java的方式)。然后将D,E放入同一个包中,将B,C放入不同的包中。也可以引入kinda函数,它是一个独立的对象,并将其用作D和E类的成员。 – evgenii

回答

0

你得出一个中间类从一个说叫它为简单起见DECommon这将有这个共同的方法DE。接下来从中导出DE

class A { 
} 

class DECommon : public A { 
    public: 
     virtual void newMethodDE() { 
      // DO YOUR MAGIC HERE 
     } 
} 

class D : public DECommon { 
} 

class E : public DECommon { 
} 

因此d和E仍将保留是-一个关系为A,而新的共同方法逻辑将仅在DECommon中间类一次实现。

+0

太棒了!好的方法... –

+0

很高兴你喜欢它,随时接受答案:) –

相关问题