五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:C++ 模板詳解(二)類(lèi)模板的概念和基本使用方式

2020-04-02 15:58 作者:C語(yǔ)言編程__Plus  | 我要投稿

與函數(shù)模板類(lèi)似地《C/C++編程筆記:C++模板詳解(一)函數(shù)模板的概念和特性》(UP兩天前發(fā)布的文章),類(lèi)也可以被一種或多種類(lèi)型參數(shù)化。例如,容器類(lèi)就是一個(gè)具有這種特性的典型例子,它通常被用于管理某種特定類(lèi)型的元素。只要使用類(lèi)模板,我們就可以實(shí)現(xiàn)容器類(lèi),而不需要確定容器中元素的類(lèi)型。

一、類(lèi)模板的實(shí)現(xiàn)

在這篇博文中,我們使用Stack作為類(lèi)模板的例子。

(1.1) 類(lèi)模板的聲明

如上所示,類(lèi)模板的聲明和函數(shù)模板的聲明很相似:在聲明之前,我們先聲明參數(shù)類(lèi)型的標(biāo)識(shí)符

當(dāng)然,也可以使用關(guān)鍵字class來(lái)代替typename。在類(lèi)模板的內(nèi)部,類(lèi)型T可以像其它的類(lèi)型一樣,用于聲明成員變量和成員函數(shù)。在這個(gè)例子中,類(lèi)的類(lèi)型是Stack<T>,其中T是模板參數(shù)。因此,當(dāng)在聲明中需要使用該類(lèi)的類(lèi)型時(shí),我們必須要使用Stack<T>。例如,如果要聲明自己實(shí)現(xiàn)的拷貝構(gòu)造函數(shù)和賦值運(yùn)算符,那就應(yīng)該這樣來(lái)編寫(xiě):

然而, 當(dāng)需要使用類(lèi)名而不是類(lèi)的類(lèi)型時(shí),就應(yīng)該只用Stack。例如,當(dāng)指定類(lèi)的名稱,或是需要編寫(xiě)構(gòu)造函數(shù)、析構(gòu)函數(shù)時(shí),就需要使用Stack。

(1.2) 類(lèi)模板的實(shí)現(xiàn)

為了定義類(lèi)模板的成員函數(shù),我們必須要指定該成員函數(shù)是一個(gè)函數(shù)模板(使用template<typename T>),而且還需要使用這個(gè)類(lèi)模板的完整類(lèi)型限定運(yùn)算符Stack<T>::。因此,成員函數(shù)push的完整定義如下:

其它成員函數(shù)的實(shí)現(xiàn)也是類(lèi)似的;和普通類(lèi)定義相同,完全也可以將成員函數(shù)的實(shí)現(xiàn)內(nèi)聯(lián)地寫(xiě)在類(lèi)中,例如:

二、類(lèi)模板的使用

參見(jiàn)如下的main函數(shù)代碼:

注意:只有那些被調(diào)用了的成員函數(shù),才會(huì)產(chǎn)生這些函數(shù)的實(shí)例化代碼。

所以,針對(duì)這個(gè)類(lèi)模板,缺省的構(gòu)造函數(shù)、push、top方法都針對(duì)int、std::string進(jìn)行了實(shí)例化。然而,pop方法只提供了std::string的實(shí)例化。這樣做的好處是:

(1)可以節(jié)省時(shí)間和空間。

(2)對(duì)于那些未能提供所有成員函數(shù)中所有操作的類(lèi)型,也可以使用該類(lèi)型來(lái)實(shí)例化類(lèi)模板。

另一方面,如果類(lèi)中含有靜態(tài)成員,那么用來(lái)實(shí)例化的每種類(lèi)型,都會(huì)實(shí)例化這些靜態(tài)成員。

學(xué)習(xí)C/C++編程知識(shí),歡迎關(guān)注UP一起成長(zhǎng)!

C/C++編程筆記:C++ 模板詳解(二)類(lèi)模板的概念和基本使用方式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
和平县| 平果县| 武隆县| 万盛区| 屯昌县| 揭东县| 上饶市| 德令哈市| 南京市| 高碑店市| 东乌珠穆沁旗| 进贤县| 托克托县| 武功县| 新和县| 金平| 车致| 梓潼县| 浦东新区| 铜川市| 瑞丽市| 金乡县| 凉山| 彝良县| 富顺县| 阿克| 团风县| 会昌县| 高青县| 天全县| 洪江市| 博罗县| 滁州市| 宁海县| 清苑县| 陆丰市| 鞍山市| 嘉祥县| 庐江县| 新巴尔虎右旗| 琼海市|