我有两个几乎完全相同的类,除了一种方法。这些类具有相同的数据部分和除1之外的所有成员函数:C++中两个真正类似的类只有一个不同的方法:如何实现?
class A {
private:
double data;
public:
double calc(){
return data*data;
}
double especific(){
return 2.0*data;
}
}
除了特定的方法之外,第二类是相同的。
该成员函数特别需要所有成员数据来计算,所以传递值或引用不是一个选项。有没有很多代码重复实现这个方法?只使用一个类或使用模板,但不使用继承(巨大的性能影响)。
感谢
编辑:感谢所有的答复。战略模式可以帮助我,我会尝试一下,看看它是否有效。基于我在不同程序中做过的一些测试,我避免了虚拟继承作为瘟疫。这个例程将被称为无处不在,性能是一个非常重要的因素。
为什么你认为继承将是一个“巨大的性能影响”? – 2010-09-03 22:39:41
我同意奥利查尔斯沃思。你有没有运行一些性能工具来确定使用继承会严重影响你的性能? – linuxuser27 2010-09-03 22:41:51
除非您使用虚拟方法,否则继承不会带来任何开销。 – doc 2010-09-03 22:47:28