1、引入
如何編寫一個(gè)通用加法函數(shù)?
第一個(gè)方法是使用函數(shù)重載, 針對(duì)每個(gè)所需相同行為的不同類型重新實(shí)現(xiàn)這個(gè)函數(shù)。C++的這種編程機(jī)制給編程者極大的方便,不需要為功能相似、參數(shù)不同的函數(shù)選用不同的函數(shù)名,也增強(qiáng)了程序的可讀性。簡(jiǎn)單示例:
1 int Add(const int &_iLeft, const int &_iRight)2 {3 return (_iLeft + _iRight) ;4 }f5 loat Add(const float &_fLeft, const float &_fRight)6 {7 return (_fLeft + _fRight) ;8 }
【 缺點(diǎn)】
1、 只要有新類型出現(xiàn), 就要重新添加對(duì)應(yīng)函數(shù)。
2、 除類型外, 所有函數(shù)的函數(shù)體都相同, 代碼的復(fù)用率不高
3、 如果函數(shù)只 是返回值類型不同, 函數(shù)重載不能解決
4、 一個(gè)方法有問(wèn)題, 所有的方法都有問(wèn)題, 不好維護(hù)。
還有一個(gè)方法是使用公共基類, 將通用的代碼放在公共的基礎(chǔ)類里面,讓需要這部分功能的類去繼承它。但是這也有【 缺點(diǎn)】:
1、 借助公共基類來(lái)編寫通用代碼, 將失去類型檢查的優(yōu)點(diǎn);
2、 對(duì)于以后實(shí)現(xiàn)的許多類, 都必須繼承自 某個(gè)特定的基類, 代碼維護(hù)更加困難。
此外還可以使用特殊的預(yù)處理程序
1 #define ADD(a, b)&n