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

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

模板初探

2019-11-14 08:57:23
字體:
供稿:網(wǎng)友

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

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

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

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

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

  使用模板的目的就是能夠讓程序員編寫與類型無關(guān)的代碼。比如編寫了一個(gè)交換兩個(gè)整型int 類型的swap函數(shù),這個(gè)函數(shù)就只能實(shí)現(xiàn)int 型,對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.survivalescaperooms.com/gw811/archive/2012/10/25/2738929.html)

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

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

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

template<class T>

T sum(T a, T b)

{

         returna+b;

}

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

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

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


上一篇:Latex-下劃線

下一篇:框架里自己類

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌图县| 三明市| 旅游| 高唐县| 山阴县| 呼伦贝尔市| 邓州市| 措勤县| 乐昌市| 宝兴县| 治多县| 上饶市| 鄂托克旗| 香港 | 喀喇| 开化县| 东阳市| 萨嘎县| 龙川县| 甘肃省| 金寨县| 钟祥市| 西乌| 华坪县| 肃北| 花莲县| 柳林县| 高淳县| 朔州市| 米脂县| 石景山区| 东辽县| 高台县| 万盛区| 东光县| 雅江县| 民丰县| 沛县| 杭州市| 枞阳县| 遂平县|