函數(shù)重載
https://github.com/hongwangli/study_cpp/blob/master/test_010_reload_template.cpp 重載是為了減少麻煩才產(chǎn)生的。 打個(gè)比方,你為了要計(jì)算兩個(gè)數(shù)的和,寫了一個(gè)函數(shù),如下:
int intSum(int nA,int nB) { return (nA+nB); } //這個(gè)只是計(jì)算了兩個(gè)整形的和,或許你還要寫一個(gè)計(jì)算浮點(diǎn)數(shù)和的函數(shù): float floatSum(float fA,float fB) { return (fA+fB); } //或許你還需要計(jì)算一個(gè)浮點(diǎn)數(shù)和一個(gè)整形的和,還需要一個(gè)函數(shù): float float_intSum(float fA,int nB) { return (fA+(float)nB); }甚至,如果你用C++的話,你還會(huì)需要一些計(jì)算對象之間的和,等等。。。。 當(dāng)寫了這么多的函數(shù),在實(shí)際運(yùn)用中根據(jù)需要選擇不同的函數(shù)來計(jì)算某些類型的和,我想你也記不住這么多函數(shù)。用重載吧,只需要記住一個(gè)函數(shù)名就行了。 /////////////////////////////////////////////////////////////////////////////
//函數(shù)Fun_Sum的重載 int Fun_Sum(int A,int B) { return (A+B); } float Fun_Sum(float A,float B) { return (A+B); } double Fun_Sum(double A,double B) { return (A+B); } UINT Fun_Sum(UINT A,UINT B) { return (A+B); }//等等,可以的話這種重載寫數(shù)十個(gè)也不會(huì)重復(fù)。 //好了,以后你想要計(jì)算某兩個(gè)類型的和時(shí)(可以是不同類型),不需要去想該用哪個(gè)計(jì)算和的函數(shù),統(tǒng)統(tǒng)調(diào)用函數(shù)Fun_Sum就行了,至于到底是其中的哪一個(gè)函數(shù)在被調(diào)用,讓編譯器去傷腦筋吧。 重載函數(shù)的參數(shù)個(gè)數(shù)、參數(shù)類型、參數(shù)順序、這三者中至少要有一個(gè)不同,才能進(jìn)行函數(shù)重載,因?yàn)檎{(diào)用重載函數(shù)就是要根據(jù)這個(gè)來區(qū)分具體的調(diào)用哪個(gè)函數(shù),而函數(shù)的返回值可以相同可以不同
函數(shù)模版
template<typename T> 通用函數(shù)定義或template<class T> 通用函數(shù)定義但是用函數(shù)模板只能用于 函數(shù)的參數(shù)個(gè)數(shù)相同而類型不同的情況,如果參數(shù)個(gè)數(shù)不同,則不能使用函數(shù)模板。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注