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

在五常等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需策劃設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,五常網(wǎng)站建設(shè)費(fèi)用合理。
既然是類型,那么我們?cè)谑褂媚0搴瘮?shù)的時(shí)候就應(yīng)該是使用它的一個(gè)實(shí)例。既然是類型與實(shí)例的關(guān)系,那么就應(yīng)該有一個(gè)類型的實(shí)例化的問題。我們對(duì)普通類型進(jìn)行實(shí)例化的時(shí)候通常需要提供必要的參數(shù)以,模板函數(shù)也不例外。只是C++模板參數(shù)不是普通的參數(shù),而是特定的類型。也就是說在實(shí)例化一個(gè)函數(shù)模板的時(shí)候需要以類型作為參數(shù)。通常,模板的參數(shù)分為模板參數(shù)和調(diào)用參數(shù)。例如:
- template
- inline RT const& max(T1 const& a, T2 const& b)
- {
- //TODO: 代碼實(shí)現(xiàn)
- ........
- }
其中,***行定義了函數(shù)模板參數(shù);第二行的函數(shù)參數(shù)則定義了調(diào)用參數(shù),需要注意的是返回值并不屬于函數(shù)模板的調(diào)用參數(shù)。
在調(diào)用一個(gè)模板的時(shí)候,最重要的是在調(diào)用的時(shí)候能正確的推導(dǎo)出C++模板參數(shù)。這里有幾點(diǎn)要注意的:
1:顯示的實(shí)例化函數(shù)模板。例如:
- template
- inline T const& max(T const& a, T const& b)
- {
- return a < b ? b : a;
- }
- // 實(shí)例化并調(diào)用一個(gè)模板
- max
(4, 4.2);
第十行,通過顯示的指定C++模板參數(shù)為double而實(shí)例化了一個(gè)模板。
2:隱式的實(shí)例化一個(gè)函數(shù)模板。例如:
- template
- inline T const& max(T const& a, T const& b)
- {
- return a < b ? b : a;
- }
- // 隱式的實(shí)例化并調(diào)用一個(gè)函數(shù)模板
- int i = max(42, 66);
第8行,我們沒有顯示的指定函數(shù)模板參數(shù),但它能自動(dòng)的去推導(dǎo)出函數(shù)模板參數(shù)為int。這里可能有個(gè)問題。如果非模板函數(shù)它的定義和推導(dǎo)后的模板函數(shù)實(shí)例一樣,會(huì)產(chǎn)生什么結(jié)果呢?例如:
- inline int const& max(int const& a, int const& b)
- {
- // 為了便于區(qū)分,讓返回結(jié)果+100
- return a < b ? a+10 : b+100;
- }
- template
- inline T const& max(T const& a, T const& b)
- {
- return a < b ? b : a;
- }
- // 這里調(diào)用的究竟是模板函數(shù)還是非模板函數(shù)?
- int i = max(42, 66);
實(shí)際上,第14行的代碼首先回去查看是否有滿足要求的非模板函數(shù);如果沒有,再根據(jù)參數(shù)去匹配并實(shí)例化相應(yīng)的模板函數(shù)。所以,它調(diào)用的應(yīng)該是非模板的max函數(shù)。
3: 也可以使用部分缺省的C++模板參數(shù)。你不用指定全部的模板參數(shù),比如,你可以從左到右的,指定一部分參數(shù)。例如:
- // 從左至右定義了三個(gè)參數(shù)
- template
- inline RT const& max(T1 const& a, T2 const& b)
- {
- //TODO: 代碼實(shí)現(xiàn)
- ..
- }
- // 可以只指定***個(gè)返回參數(shù)。即,要求返回double類型
- max
(4, 4.2);
上面的代碼中,由于返回參數(shù)類型不屬于調(diào)用參數(shù),所以必須明確的指定它為double類型。而T1和T2屬于調(diào)用C++模板參數(shù),能從函數(shù)調(diào)用中推導(dǎo)出來。
分享標(biāo)題:C++模板參數(shù)具體概念講解
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/cdpecgd.html


咨詢
建站咨詢
