我有兩個幾乎完全相同的類,除了一種方法。這些類具有相同的數據部分和除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