亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++類模板與模板類深入詳解

2020-01-26 15:29:06
字體:
來源:轉載
供稿:網友

1、在c++的Template中很多地方都用到了typename與class這兩個關鍵字,而且有時候二者可以替換,那么是不是這兩個關鍵字完全一樣呢?
事實上class用于定義類,在模板引入c++后,最初定義模板的方法為:template<class T>,這里class關鍵字表明T是一個類型,后來為了避免class在這兩個地方的使用可能給人帶來混淆,所以引入了typename這個關鍵字,它的作用同class一樣表明后面的符號為一個類型,這樣在定義模板的時候就可以使用下面的方式了:      template<typename T>.在模板定義語法中關鍵字class與typename的作用完全一樣。

2、類模板與模板類的概念

(1) 什么是類模板

一個類模板(也稱為類屬類或類生成類)允許用戶為類定義一種模式,使得類中的某些數據成員、默認成員函數的參數、某些成員函數的返回值,能夠取任意類型(包括系統預定義的和用戶自定義的)。
如果一個類中數據成員的數據類型不能確定,或者是某個成員函數的參數或返回值的類型不能確定,就必須將此類聲明為模板,它的存在不是代表一個具體的、實際的類,而是代表著一類類。

(2)類模板定義

定義一個類模板,一般有兩方面的內容:

A.首先要定義類,其格式為:

template <class T>class foo{……}

foo 為類名,在類定義體中,如采用通用數據類型的成員,函數參數的前面需加上T,其中通用類型T可以作為普通成員變量的類型,還可以作為const和static成員變量以及成員函數的參數和返回類型之用。例如:

template<class T>class Test{private:T n;const T i;static T cnt;public:Test():i(0){}Test(T k);~Test(){}void print();T operator+(T x);};

B. 在類定義體外定義成員函數時,若此成員函數中有模板參數存在,則除了需要和一般類的體外定義成員函數一樣的定義外,還需在函數體外進行模板聲明

例如:

template<classT>voidTest<T>::print(){std::cout<<"n="<<n<<std::endl;std::cout<<"i="<<i<<std::endl;std::cout<<"cnt="<<cnt<<std::endl;}

如果函數是以通用類型為返回類型,則要在函數名前的類名后綴上"<T>".例如:

template<class T>Test<T>::Test(T k):i(k){n=k;cnt++;}template<class T>T Test<T>::operator+(T x){return n + x;}

C. 在類定義體外初始化const成員和static成員變量的做法和普通類體外初始化const成員和static成員變量的做法基本上是一樣的,唯一的區別是需再對模板進行聲明,例如

template<class T>int Test<T>::cnt=0;template<class T>Test<T>::Test(T k):i(k){n=k;cnt++;}

(3)類模板的使用。類模板的使用實際上是將類模板實例化成一個具體的類,它的格式為:類名<實際的類型>.
模板類是類模板實例化后的一個產物。說個形象點的例子吧。我們把類模板比作一個做餅干的模子,而模板類就是用這個模子做出來的餅干,至于這個餅干是什么味道的就要看你自己在實例化時用的是什么材料了,你可以做巧克力餅干,也可以做豆沙餅干,這些餅干的除了材料不一樣外,其他的東西都是一樣的了。

3、函數模板和模板函數

(1)函數模板
函數模板可以用來創建一個通用的函數,以支持多種不同的形參,避免重載函數的函數體重復設計。它的最大特點是把函數使用的數據類型作為參數。
函數模板的聲明形式為:

template<typename(或class) T><返回類型><函數名>(參數表){函數體}

其中,template是定義模板函數的關鍵字;template后面的尖括號不能省略;typename(或class)是聲明數據類型參數標識符的關鍵字,用以說明它后面的標識符是數據類型標識符。這樣,在以后定義的這個函數中,凡希望根據實參數據類型來確定數據類型的變量,都可以用數據類型參數標識符來說明,從而使這個變量可以適應不同的數據類型。例如:

template<typename(或class) T>T fuc(T x, T y){T x;//……}

函數模板只是聲明了一個函數的描述即模板,不是一個可以直接執行的函數,只有根據實際情況用實參的數據類型代替類型參數標識符之后,才能產生真正的函數。

(2)模板函數:
模板函數的生成就是將函數模板的類型形參實例化的過程。
例如:

double d;int a;fuc(d,a);

則系統將用實參d的數據類型double去代替函數模板中的T生成函數:

double fuc(double x,int y){double x;//……}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线亚洲一区| 日韩久久精品成人| 欧美精品日韩www.p站| 日本精品视频在线观看| 国产中文日韩欧美| 国产精品中文字幕在线观看| 国产精品亚洲网站| 成人免费在线视频网站| 久久777国产线看观看精品| 亚洲国产精品99久久| 91a在线视频| 欧美日韩免费网站| 久久久久亚洲精品成人网小说| 国产日韩欧美成人| 热久久美女精品天天吊色| 亚洲国产美女久久久久| 精品福利免费观看| 国产精品视频免费在线观看| 久久99精品久久久久久噜噜| 色妞色视频一区二区三区四区| 色妞在线综合亚洲欧美| 欧美久久精品午夜青青大伊人| 国语自产精品视频在线看抢先版图片| 久久影视电视剧凤归四时歌| 亚洲xxxxx电影| 久久久噜噜噜久久中文字免| 日韩成人av网址| 亚洲人精选亚洲人成在线| 17婷婷久久www| 欧美电影在线观看完整版| 国产精品成人国产乱一区| 国产精品视频一区二区三区四| 2021国产精品视频| 国产精品88a∨| 亚洲美女av在线| 欧美亚洲另类制服自拍| 91久久久久久久久久久久久| 久久久成人精品视频| 亚洲男人第一av网站| 成人在线免费观看视视频| 国产精品视频一区二区三区四| 国产精品欧美在线| 伊人久久久久久久久久久久久| 日韩一区二区三区国产| 亚洲精品国产免费| 亚洲3p在线观看| 羞羞色国产精品| 亚洲精品日韩久久久| 欧美在线视频播放| 日本一区二区三区四区视频| 日韩欧美一区二区三区久久| 欧美做受高潮电影o| 国产一区二区三区在线观看视频| 日韩欧亚中文在线| 国产精品精品久久久久久| 久久久久免费视频| 91在线精品播放| 国产精品入口福利| 亚洲va国产va天堂va久久| 日韩在线精品视频| 久久精品国产欧美激情| 夜夜嗨av一区二区三区四区| 国产成人精品在线观看| 亚洲天堂av图片| 第一福利永久视频精品| 亚洲福利在线观看| 成人国产精品色哟哟| 中文字幕日本精品| 亚洲在线视频福利| 国产成人一区二区| 亚洲第一级黄色片| 国产成人精品久久亚洲高清不卡| 欧美日韩一区二区在线| 欧美成人合集magnet| 精品毛片网大全| 亚洲精品第一国产综合精品| 日韩精品中文在线观看| 亚洲第一区中文99精品| 97精品国产91久久久久久| 亚洲小视频在线观看| 欧美激情第三页| 亚洲免费伊人电影在线观看av| 欧美激情二区三区| 亚洲电影第1页| 国产精品久久久久久久久| 影音先锋欧美在线资源| 中文字幕欧美日韩精品| 91高清视频免费| 一本一本久久a久久精品牛牛影视| 欧美中文字幕第一页| 在线视频欧美日韩| 亚洲欧美中文字幕在线一区| 久久这里有精品| 亚洲欧美精品一区| 国产成人亚洲精品| 国产精品久久久久久av福利| 亚洲欧美日韩精品久久亚洲区| 成人国产精品一区二区| 欧美一区二区三区艳史| 久久久久久久影院| 日韩视频在线免费| 中文字幕日本欧美| 国产盗摄xxxx视频xxx69| 色噜噜久久综合伊人一本| 美女精品久久久| 欧美野外猛男的大粗鳮| 亚洲最大av网站| 色www亚洲国产张柏芝| 久久久在线观看| 成人女保姆的销魂服务| 国产999视频| 亚洲精品久久7777777| 欧美成人手机在线| 久久夜精品va视频免费观看| 欧美电影免费观看大全| 国内自拍欧美激情| 亚洲美女精品成人在线视频| 欧美三级欧美成人高清www| 成人看片人aa| 成人在线激情视频| 性欧美xxxx| 欧美性猛交视频| 国产91露脸中文字幕在线| 久久琪琪电影院| 久久久久久噜噜噜久久久精品| 欧美一级片久久久久久久| 黑人巨大精品欧美一区二区一视频| 久久久免费在线观看| 狠狠爱在线视频一区| 亚洲精品免费在线视频| 日韩免费在线视频| 欧美在线激情网| 伊人久久久久久久久久久久久| 97在线免费观看| 亚洲国产精品va在看黑人| 色综合久久精品亚洲国产| 美女国内精品自产拍在线播放| 欧美日本高清视频| 中文日韩在线观看| 国产日韩精品一区二区| 色综合久久天天综线观看| 国产亚洲精品成人av久久ww| 亚洲人成在线免费观看| 国产在线一区二区三区| 精品香蕉一区二区三区| 久久久亚洲成人| 欧美日本亚洲视频| 久久理论片午夜琪琪电影网| 日韩在线免费视频| 国产精品一区二区久久久久| 亚洲视频在线观看网站| 丝袜亚洲欧美日韩综合| 美日韩丰满少妇在线观看| 欧美在线视频免费| 国产精品自拍偷拍| 欧美一级视频免费在线观看| 色综合91久久精品中文字幕| 国产精自产拍久久久久久| 国产精品88a∨| 狠狠久久亚洲欧美专区| 热久久99这里有精品| 日韩中文字幕网站| 亚洲福利在线视频| 国产精品一区二区3区|