国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 微博| 双牌县| 绥德县| 鹤庆县| 威海市| 平南县| 盈江县| 会昌县| 曲沃县| 浦江县| 扎囊县| 濮阳县| 泾阳县| 宜城市| 峨山| 五河县| 嘉禾县| 曲麻莱县| 金山区| 衢州市| 清徐县| 固始县| 湘西| 长沙市| 临湘市| 隆回县| 天长市| 东光县| 若尔盖县| 阿图什市| 溆浦县| 托里县| 瓮安县| 景东| 杨浦区| 三江| 延庆县| 十堰市| 德格县| 尉犁县| 察雅县|