Templates

這是一篇譯文原文地址
模板我將從兩個(gè)方面來為大家介紹

模板類
模板函數(shù)

如果即使數(shù)據(jù)類型不一樣阵幸,有一些類卻可以做同樣的事,這樣該多好芽世?一個(gè)類來讓你選擇它是作用于什么數(shù)據(jù)類型的挚赊。
模板是一種讓你的類更加抽象的方法,它可以讓你在不知道將要處理什么樣的數(shù)據(jù)類型的時(shí)候定義類的行為济瓢。本質(zhì)上這被稱為泛型編程荠割。這是一個(gè)對(duì)于理解模板來說一個(gè)重要的概念因?yàn)樗嵝殉绦騿T:一個(gè)模板類是不依賴于它將要處理的數(shù)據(jù)的類型的。進(jìn)一層說旺矾,一個(gè)模板類更關(guān)心的是算法而不是一個(gè)數(shù)據(jù)類型的特殊差別蔑鹦。模板類可以和抽象數(shù)據(jù)類型一起使用來使其可以處理任何數(shù)據(jù)類型的數(shù)據(jù)。例如箕宙,你可能會(huì)定義一個(gè)模板棧類來處理一個(gè)任何數(shù)據(jù)類型的棧嚎朽,而不是為每一個(gè)數(shù)據(jù)類型都創(chuàng)建一個(gè)棧類。這種使一個(gè)類可以處理不同類型的數(shù)據(jù)意味著代碼更容易維護(hù)扒吁,類更加可復(fù)用火鼻。

模板類

  • 聲明模板類
    template <class a_type> class a_class {...};
    上面的class表示a_type代表一種數(shù)據(jù)類型,注意a_type不是一個(gè)關(guān)鍵字雕崩,是在程序執(zhí)行時(shí)代表一個(gè)數(shù)據(jù)類型的標(biāo)識(shí)符魁索。例如當(dāng)在類中定義變量時(shí)你可以這樣
    a_type a_var
    當(dāng)開發(fā)者定義了當(dāng)程序初始化一個(gè)a_class的特殊實(shí)例時(shí)a_type的數(shù)據(jù)類型是什么,a_var的類型就會(huì)和其一樣盼铁,當(dāng)在模板類中定義成員函數(shù)時(shí)粗蔚,有必要把它定義為一個(gè)模板函數(shù)。
    template<class a_type> void a_class<a_type>::a_function(){...}
  • 定義一個(gè)模板類的實(shí)例
    a_class<int> an_example_class;
    模板類的一個(gè)實(shí)例對(duì)象成為特殊化饶火,特殊化提醒我們?cè)瓉淼念愂且粋€(gè)泛型類鹏控,鑒于一個(gè)類的特定實(shí)例被指定為單一的數(shù)據(jù)類型(可以是很多類型)
    通常從具體到抽象比較容易,因此寫一個(gè)指定數(shù)據(jù)類型的的類然后變?yōu)槟0宓姆羟蓿盒偷念愂呛苋菀椎摹?/li>
  • 我們先定義一個(gè)作用于整型的類
class calc
{
  public:
    int multiply(int x, int y);
    int add(int x, int y);
 };
int calc::multiply(int x, int y)
{
    return x*y;
}
int calc::add(int x, int y)
{
    return x+y;
}

如果我們希望浮點(diǎn)型數(shù)據(jù)也可以怎么辦呢当辐?我們將會(huì)使用一個(gè)模板

template <class A_Type> class calc
{
  public:
    A_Type multiply(A_Type x, A_Type y);
    A_Type add(A_Type x, A_Type y);
};
template <class A_Type> A_Type calc<A_Type>::multiply(A_Type x,A_Type y)
{
  return x*y;
}
template <class A_Type> A_Type calc<A_Type>::add(A_Type x, A_Type y)
{
  return x+y;
}

模板函數(shù)

模板函數(shù)比模板類要簡(jiǎn)單點(diǎn),因?yàn)榫幾g器可以從函數(shù)的參數(shù)列表中推斷想要的類型

  • 聲明一個(gè)可以把兩數(shù)相加的模板函數(shù)
template <class type> type add(type a, type b)
{
    return a + b;
}
add<int>( 1, 2);//結(jié)果是 3
add<int>(5.6, 8.0);//結(jié)果是鲤看?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缘揪,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌找筝,老刑警劉巖蹈垢,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異袖裕,居然都是意外死亡曹抬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門急鳄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谤民,“玉大人,你說我怎么就攤上這事疾宏±盗伲” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵灾锯,是天一觀的道長(zhǎng)兢榨。 經(jīng)常有香客問我,道長(zhǎng)顺饮,這世上最難降的妖魔是什么吵聪? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮兼雄,結(jié)果婚禮上吟逝,老公的妹妹穿的比我還像新娘。我一直安慰自己赦肋,他們只是感情好块攒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佃乘,像睡著了一般囱井。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趣避,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天庞呕,我揣著相機(jī)與錄音,去河邊找鬼程帕。 笑死住练,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的愁拭。 我是一名探鬼主播讲逛,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼岭埠!你這毒婦竟也來了盏混?” 一聲冷哼從身側(cè)響起顺呕,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎括饶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體来涨,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡图焰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹦掐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片技羔。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卧抗,靈堂內(nèi)的尸體忽然破棺而出藤滥,到底是詐尸還是另有隱情,我是刑警寧澤社裆,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布拙绊,位于F島的核電站,受9級(jí)特大地震影響泳秀,放射性物質(zhì)發(fā)生泄漏标沪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一嗜傅、第九天 我趴在偏房一處隱蔽的房頂上張望金句。 院中可真熱鬧,春花似錦吕嘀、人聲如沸违寞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)趁曼。三九已至,卻和暖如春棕洋,著一層夾襖步出監(jiān)牢的瞬間彰阴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工拍冠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尿这,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓庆杜,卻偏偏與公主長(zhǎng)得像射众,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子晃财,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理叨橱,服務(wù)發(fā)現(xiàn)典蜕,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法罗洗,類相關(guān)的語法愉舔,內(nèi)部類的語法,繼承相關(guān)的語法伙菜,異常的語法轩缤,線程的語...
    子非魚_t_閱讀 31,602評(píng)論 18 399
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,829評(píng)論 0 6
  • 20170323 完成事項(xiàng): 得到專欄:薛兆豐+吳軍+和菜頭 待完成事項(xiàng): 專欄整理: 有道云分享:薛兆豐+和菜頭...
    立志成為勉強(qiáng)家閱讀 154評(píng)論 0 0
  • 三月初 天氣剛剛回暖。午后的陽(yáng)光很好贩绕,藍(lán)天 白云 很是愜意火的。
    唏噓同學(xué)閱讀 124評(píng)論 0 0