国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

模板初探

2019-11-11 06:16:54
字體:
供稿:網(wǎng)友

對(duì)于模板這個(gè)東西,之前一直知道它的存在,但是也一直是模糊的狀態(tài),不清楚它到底是怎么個(gè)用法,看別人用的也是模模糊糊的.之前就聽聞c++的精髓里面必有的一個(gè)就是泛型編程,也就是說的這個(gè)模板,今天就初探它的奧妙.

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

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

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

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

  使用模板的目的就是能夠讓程序員編寫與類型無關(guān)的代碼。比如編寫了一個(gè)交換兩個(gè)整型int 類型的swap函數(shù),這個(gè)函數(shù)就只能實(shí)現(xiàn)int 型,對(duì)double,字符這些類型無法實(shí)現(xiàn),要實(shí)現(xiàn)這些類型的交換就要重新編寫另一個(gè)swap函數(shù)。使用模板的目的就是要讓這程序的實(shí)現(xiàn)與類型無關(guān),比如一個(gè)swap模板函數(shù),即可以實(shí)現(xiàn)int 型,又可以實(shí)現(xiàn)double型的交換。模板可以應(yīng)用于函數(shù)和類。(引自http://www.cnblogs.com/gw811/archive/2012/10/25/2738929.html)

         從上面的介紹可以看出,用模板是可以將一些通用的函數(shù)或者類進(jìn)行再抽象,比如棧,隊(duì)列等的具體內(nèi)容用某個(gè)名字<(class 形參名>)代替,然后真正要用的時(shí)候再將具體內(nèi)容代入,從而得到正確的效果.這樣不僅可以避免很多的重復(fù)代碼,而且可以處理我們?cè)诰帉戭惖臅r(shí)候還不存在的類型.這也是泛型編程的精髓所在吧(我自認(rèn)為的).

         不過,我此前一直不明白的是,用泛型來寫代碼,那如果用到的東西那個(gè)類沒有怎么辦?

比如我有個(gè)函數(shù)是這樣的

template<class T>

T sum(T a, T b)

{

         returna+b;

}

那假如我傳入的是自定義類型,他沒有重載+號(hào),那運(yùn)行到這里會(huì)怎么樣呢?

經(jīng)測(cè)試,是編譯都編不過的.會(huì)得到一個(gè)錯(cuò)誤(錯(cuò)誤     1       errorC2676: 二進(jìn)制“+”:“B”不定義該運(yùn)算符或到預(yù)定義運(yùn)算符可接收的類型的轉(zhuǎn)換,B是自定義的類).其實(shí)我的一個(gè)理解就是這個(gè)模板只是編譯階段去處理所有的調(diào)用這個(gè)模板類或者模板函數(shù)的地方,將其換成真正的類型去編譯,所以換了之后,如果需要有的函數(shù)不存在,則就會(huì)出現(xiàn)編譯錯(cuò)誤.

此外 模板不能跟之前寫普通類一樣,聲明放一個(gè).h文件 實(shí)現(xiàn)放.cpp文件.聲明和實(shí)現(xiàn)必須放在同一個(gè)文件里面才能正常工作


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 荥阳市| 聂荣县| 仲巴县| 庆云县| 龙州县| 石首市| 陆川县| 翁牛特旗| 龙川县| 车致| 金坛市| 弋阳县| 琼海市| 宁安市| 晋中市| 体育| 宜州市| 黄浦区| 东乌珠穆沁旗| 湘西| 涟源市| 海淀区| 苍溪县| 林口县| 新田县| 柯坪县| 崇信县| 山阴县| 牡丹江市| 合江县| 钟山县| 定南县| 揭东县| 凤阳县| 门源| 张家界市| 浪卡子县| 平泉县| 临泉县| 鄱阳县| 丰台区|