溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C++中的函數(shù)模板通式的調(diào)用

發(fā)布時間:2021-09-10 09:34:31 來源:億速云 閱讀:107 作者:chen 欄目:編程語言

這篇文章主要講解了“C++中的函數(shù)模板通式的調(diào)用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++中的函數(shù)模板通式的調(diào)用”吧!

  模板是C++支持參數(shù)化多態(tài)的工具,使用模板可以使用戶為類或者函數(shù)聲明一種一般模式,使得類中的某些數(shù)據(jù)成員或者成員函數(shù)的參數(shù)、返回值取得任意類型。

  模板是一種對類型進(jìn)行參數(shù)化的工具;

  通常有兩種形式:函數(shù)模板和類模板;

  函數(shù)模板針對僅參數(shù)類型不同的函數(shù);

  類模板針對僅數(shù)據(jù)成員和成員函數(shù)類型不同的類。

  使用模板的目的就是能夠讓程序員編寫與類型無關(guān)的代碼。比如編寫了一個交換兩個整型int類型的swap函數(shù),這個函數(shù)就只能實現(xiàn)int型,對double,字符這些類型無法實現(xiàn),要實現(xiàn)這些類型的交換就要重新編寫另一個swap函數(shù)。使用模板的目的就是要讓這程序的實現(xiàn)與類型無關(guān),比如一個swap模板函數(shù),即可以實現(xiàn)int型,又可以實現(xiàn)double型的交換。模板可以應(yīng)用于函數(shù)和類。下面分別介紹。

  注意:模板的聲明或定義只能在全局,命名空間或類范圍內(nèi)進(jìn)行。即不能在局部范圍,函數(shù)內(nèi)進(jìn)行,比如不能在main函數(shù)中聲明或定義一個模板。

函數(shù)模板通式

  函數(shù)模板的格式:

  template返回類型函數(shù)名(參數(shù)列表)

  {

  函數(shù)體

  }

  其中template和class是關(guān)見字,class可以用typename關(guān)見字代替,在這里typename和class沒區(qū)別,<>括號中的參數(shù)叫模板形參,模板形參和函數(shù)形參很相像,模板形參不能為空。一但聲明了模板函數(shù)就可以用模板函數(shù)的形參名聲明類中的成員變量和成員函數(shù),即可以在該函數(shù)中使用內(nèi)置類型的地方都可以使用模板形參名。模板形參需要調(diào)用該模板函數(shù)時提供的模板實參來初始化模板形參,一旦編譯器確定了實際的模板實參類型就稱他實例化了函數(shù)模板的一個實例。比如swap的模板函數(shù)形式為:

  templatevoidswap(T&a,T&b){},

  當(dāng)調(diào)用這樣的模板函數(shù)時類型T就會被被調(diào)用時的類型所代替,比如swap(a,b)其中a和b是int型,這時模板函數(shù)swap中的形參T就會被int所代替,模板函數(shù)就變?yōu)閟wap(int&a,int&b)。而當(dāng)swap(c,d)其中c和d是double類型時,模板函數(shù)會被替換為swap(double&a,double&b),這樣就實現(xiàn)了函數(shù)的實現(xiàn)與類型無關(guān)的代碼。

  注意:對于函數(shù)模板而言不存在h(int,int)這樣的調(diào)用,不能在函數(shù)調(diào)用的參數(shù)中指定模板形參的類型,對函數(shù)模板的調(diào)用應(yīng)使用實參推演來進(jìn)行,即只能進(jìn)行h(2,3)這樣的調(diào)用,或者inta,b;h(a,b)。

感謝各位的閱讀,以上就是“C++中的函數(shù)模板通式的調(diào)用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++中的函數(shù)模板通式的調(diào)用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI