日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C++模板參數(shù)具體概念講解

C++編程語言是一個功能強大的計算機應(yīng)用語言,它的出現(xiàn)在一定程度上大大降低了開發(fā)人員的負(fù)擔(dān),提高了開發(fā)效率。我們在這里先來了解一下C++模板參數(shù)的相關(guān)概念。簡單的說,可以把模板看作一種類型,函數(shù)模板也不例外。

在五常等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需策劃設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,五常網(wǎng)站建設(shè)費用合理。

既然是類型,那么我們在使用模板函數(shù)的時候就應(yīng)該是使用它的一個實例。既然是類型與實例的關(guān)系,那么就應(yīng)該有一個類型的實例化的問題。我們對普通類型進(jìn)行實例化的時候通常需要提供必要的參數(shù)以,模板函數(shù)也不例外。只是C++模板參數(shù)不是普通的參數(shù),而是特定的類型。也就是說在實例化一個函數(shù)模板的時候需要以類型作為參數(shù)。通常,模板的參數(shù)分為模板參數(shù)和調(diào)用參數(shù)。例如:

 
 
 
  1. template  
  2. inline RT const& max(T1 const& a, T2 const& b)  
  3. {  
  4. //TODO: 代碼實現(xiàn)  
  5. ........  

其中,***行定義了函數(shù)模板參數(shù);第二行的函數(shù)參數(shù)則定義了調(diào)用參數(shù),需要注意的是返回值并不屬于函數(shù)模板的調(diào)用參數(shù)。

在調(diào)用一個模板的時候,最重要的是在調(diào)用的時候能正確的推導(dǎo)出C++模板參數(shù)。這里有幾點要注意的:

1:顯示的實例化函數(shù)模板。例如:

 
 
 
  1. template  
  2. inline T const& max(T const& a, T const& b)  
  3. {  
  4. return a < b ? b : a;  
  5. }  
  6. // 實例化并調(diào)用一個模板  
  7. max(4, 4.2); 

第十行,通過顯示的指定C++模板參數(shù)為double而實例化了一個模板。

2:隱式的實例化一個函數(shù)模板。例如:

 
 
 
  1. template  
  2. inline T const& max(T const& a, T const& b)  
  3. {  
  4. return a < b ? b : a;  
  5. }  
  6. // 隱式的實例化并調(diào)用一個函數(shù)模板  
  7. int i = max(42, 66); 

第8行,我們沒有顯示的指定函數(shù)模板參數(shù),但它能自動的去推導(dǎo)出函數(shù)模板參數(shù)為int。這里可能有個問題。如果非模板函數(shù)它的定義和推導(dǎo)后的模板函數(shù)實例一樣,會產(chǎn)生什么結(jié)果呢?例如:

 
 
 
  1. inline int const& max(int const& a, int const& b)  
  2. {  
  3. // 為了便于區(qū)分,讓返回結(jié)果+100  
  4. return a < b ? a+10 : b+100;  
  5. }  
  6. template  
  7. inline T const& max(T const& a, T const& b)  
  8. {  
  9. return a < b ? b : a;  
  10. }  
  11. // 這里調(diào)用的究竟是模板函數(shù)還是非模板函數(shù)?  
  12. int i = max(42, 66); 

實際上,第14行的代碼首先回去查看是否有滿足要求的非模板函數(shù);如果沒有,再根據(jù)參數(shù)去匹配并實例化相應(yīng)的模板函數(shù)。所以,它調(diào)用的應(yīng)該是非模板的max函數(shù)。

3: 也可以使用部分缺省的C++模板參數(shù)。你不用指定全部的模板參數(shù),比如,你可以從左到右的,指定一部分參數(shù)。例如:

 
 
 
  1. // 從左至右定義了三個參數(shù)  
  2. template  
  3. inline RT const& max(T1 const& a, T2 const& b)  
  4. {  
  5. //TODO: 代碼實現(xiàn)  
  6. ..  
  7. }  
  8. // 可以只指定***個返回參數(shù)。即,要求返回double類型  
  9. max(4, 4.2); 

上面的代碼中,由于返回參數(shù)類型不屬于調(diào)用參數(shù),所以必須明確的指定它為double類型。而T1和T2屬于調(diào)用C++模板參數(shù),能從函數(shù)調(diào)用中推導(dǎo)出來。


當(dāng)前題目:C++模板參數(shù)具體概念講解
分享鏈接:http://www.5511xx.com/article/cdpecgd.html