freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c程序設(shè)計第三章函數(shù)和函數(shù)模板-資料下載頁

2025-01-06 10:52本頁面
  

【正文】 ) B 。源程序如下 () include iostream using namespace std; ________ T fun(T x) { ______y; y=x*xT(5); return y; } void main() { float a=2; coutfun(a); } template class T T 使用函數(shù)模板 函數(shù)模板是不能直接執(zhí)行的,需要實例化為模板函數(shù)后才能執(zhí)行。 使用格式: 模板函數(shù)名 類型參數(shù) (實參表 ) 或者: 模板函數(shù)名 (實參表 ) 顯式比較準(zhǔn)則 默認(rèn)方式 當(dāng)編譯系統(tǒng)發(fā)現(xiàn)有一個函數(shù)調(diào)用時, c++將根據(jù)“實參表”中的類型生成一個重載函數(shù)即模板函數(shù)。該模板函數(shù)的定義體與函數(shù)模板的函數(shù)定義體相同,而“形參表”的類型則以“實參表”的實際類型為依據(jù)。 如有函數(shù)模板如下: template class T T max(T a,T b) { if(ab) return a。 else return b。 } m1=maxint(3,8)。 m2=maxdouble(,)。 m3=maxchar(39。a39。,39。A39。)。 m1=max(3,8)。 m2=max(,)。 m3=max(39。a39。,39。A39。)。 或者 則對該函數(shù)模板的使用有: m4=maxchar(39。a39。,39。A39。)。 m4=max(97,39。A39。)。 error:template parameter 39。T39。 is ambiguous X √ m4=max(char(97),39。A39。)。 m4=max(97,int(39。A‘))。 √ √ 注:要想省去顯式調(diào)用的麻煩,條件是由這個調(diào)用的函數(shù)參數(shù)表能夠惟一地去標(biāo)識出模板參數(shù)的一個集合。 練習(xí):利用函數(shù)模板設(shè)計一個求兩個數(shù)之和的函數(shù),并檢驗之。 template class T T sum(T n1,T n2) { return (n1+n2)。 } void main() { coutsum(3,5)endl。 coutsum(,)endl。 } 重載函數(shù)模板 函數(shù)模板與重載是密切相關(guān)的。實際上,從函數(shù)模板產(chǎn)生的相關(guān)函數(shù)都是同名的,因此 c++編譯系統(tǒng)采用重載的解決方法調(diào)用相應(yīng)函數(shù)。 函數(shù)模板本身可以用多種方式重載,這需要提供其他函數(shù)模板,制定不同參數(shù)的相同函數(shù)名。 () 函數(shù)模板也可以用其他非模板函數(shù)(同名而參數(shù)不同)重載。 ( ) T max(T a,T b) { if(ab) return a。 else return b。 } 練習(xí) 1:利用函數(shù)模板設(shè)計一個求兩個數(shù)中較大者的函數(shù)。 練習(xí) 2:利用函數(shù)模板設(shè)計一個求三個數(shù)中較大者的函數(shù)。 template class T T max(T a,T b,T c) { T m。 if(ab) m= a。 else m= b。 if(cm) m=c。 return m。 } include iostream using namespace std。 template class T T max(T a,T b) { if(ab) return a。 else return b。 } template class T T max(T a,T b,T c) { T m。 if(ab) m= a。 else m= b。 if(cm) m=c。 return m。 } void main() { coutmax(5,6,8)endl。 coutmax(,)endl。 } 函數(shù)模板的重載 include template class T T max(T x,T y) {cout模板函數(shù): max=。 return (xy)?x:y。 } int max(int x,int y,int z=0) {int m。 coutint重載函數(shù) :max=。 if(z==0) return (xy)?x:y。 else {m=(xy)?x:y。 return (mz)?m:z。} } char max(char x,char y) {coutchar重載函數(shù): max=。 return (xy)?x:y。 } void main() { coutmax(3,6)endl。 coutmax(3,6,9)endl。 coutmax(39。a39。,39。c39。)endl。 coutmax(,)endl。 } 函數(shù)調(diào)用的匹配順序 當(dāng)一個實際的函數(shù)調(diào)用時,它既可以和一個重載函數(shù)相匹配或是參數(shù)轉(zhuǎn)換后與某一重載函數(shù)相匹配,又可以與某一模板函數(shù)相匹配,這并不會產(chǎn)生二義性。只是調(diào)用哪一個需要按照一定的規(guī)則安排先后次序。這些規(guī)則就是函數(shù)模板與同名的非模板函數(shù)的重載方法均遵循的約定: (1)尋找一個參數(shù)完全匹配的函數(shù),如果找到了就調(diào)用它。 (2)在 (1)失敗后,尋找一個函數(shù)模板,使其實例化,產(chǎn)生一個匹配的模板函數(shù),若找到了,就調(diào)用它。 (3)在 (1)、 (2)均失敗后,再試一試低一級的對函數(shù)的重載方法,例如通過類型轉(zhuǎn)化可產(chǎn)生參數(shù)匹配等,若找到了,就調(diào)用它。 (4)若以上均失敗,則就是一個錯誤的調(diào)用。 1.給出下面程序的輸出結(jié)果。 () includeiostream using namespace std; templateclass T T max(T ml, T m2) {return(m1m2)?ml:m2:} void main( ) { coutmax(1, 7) \tmax(, )endl; coutmax(39。y39。, 39。b39。 )″\t″max(A, a)endl; } 作業(yè): 課本 65頁: 改錯題: 2題 編程題: 8題
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1