999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

模板在C++中的應用

2019-09-19 11:34:52趙娟
電腦知識與技術 2019年20期

趙娟

摘要:本文主要介紹C++中參數化程序設計類型——模版,分別從函數模版和類模版兩個方面介紹了模版的使用,通過實例加以比較,得出模版是一種通用性強、重用性高的類型。

關鍵詞:C++;模版;參數化程序設計;重用

中圖分類號:TP311? ? ? 文獻標識碼:A

文章編號:1009-3044(2019)20-0296-02

開放科學(資源服務)標識碼(OSID):

Abstract: This paper mainly introduces the parameterization programming type in C++:template, which introduces the use of templates from two aspects: function template and class template. By comparison with examples, the template is a type with high versatility and high reusability.

Key words: C ++; template; parameterized programming; reuse

1 引言

C++語言的繼承性和多態性的目的就是實現代碼的重用,為了實現代碼重用,C++引入了標準模板庫STL,使用STL使得程序盡可能地通用,STL的核心就是模板,如容器、算法等都是模板。

模板是一種通用的程序設計,是C++提供的一種參數化程序設計類型。通常我們想要比較不同數據類型的時候不得不定義兩種不同的函數來表示區分,為了能精簡代碼和避免強類型的嚴格性和靈活性的沖突,我們就需要用到模板去改善這種情況。

C++模版分為兩類:函數模版和類模版。函數模版是一類函數的抽象,它的形參可以是任意類型,使用同一函數模版可以實現不同數據類型數據的同一操作。類模版為用戶定義了一種模式,是提高C++編程效率的一種方法。和普通類相比,類模板的特點是類中的某些成員數據的類型,某些成員函數的形參、返回值能取任意類型,包括基本數據類型和自定義類型。

2 函數模板

函數模版是函數重載的簡化,函數重載是用兩個或兩個以上的函數對不同數據類型數據或者不同個數的數據完成相同的操作,而函數模版是用一個函數對不同數據類型數據完成相同的操作,重載的過程留給編譯器在編譯階段實現,進而簡化程序。

2.1 函數模板實例

此例是用來計算任意類型數的絕對值。該函數模板就為程序員提供了一個計算絕對值的算法,程序員只需要在使用時賦予具體的實參,編譯器會根據實參的類型推導出函數模板的形參類型。例如,對于調用表達式a(-2),由于實參-2為int型,所以推導出模板中類型參數T為int。當形參類型確定后,編譯器將以函數模板為樣板,生成一個函數:int a(int? x)? {return? x>0?x:-x; },因此,函數模板是函數重載的簡化,可以使函數體保持不變。

2.2 函數模板在冒泡排序算法上的應用

使用函數模板的冒泡排序可適用于任何含有n個元素的一維數組中,數組中元素類型T可取整型,實型,甚至是自定義類型。若在冒泡排序時不使用函數模板則會變成下列情況:

此時的冒泡排序只能適用于n個int型數據,其他類型數據則無法使用。

3 類模板

類模板的抽象層次比類高,它是對不同類的公共性質的抽象,而類是對一組對象的公共性質的抽象。類模板為用戶提供了一種定義類的模式,使得類中的某些成員數據的類型,某些成員函數的形參、返回值可以是任意類型,包括基本數據類型和自定義數據類型。

3.1 類模板在堆棧的應用

在堆棧中使用類模板,使得類模板的數據成員list數組的成員可以是任意類型。函數成員Push的形參、Pop的返回值也可以是任意類型。讓堆棧這種數據結構在使用的時候不拘泥于數據類型的限制,算法的重用性更高了。

3.2 類模板中函數成員的定義

以上例的堆棧類模板為例,由于類模板的成員函數操作的數據成員的數據類型不確定,導致了類模板的函數成員一定是模板函數,所以類模板的成員函數的定義也要按照模板函數的要求去定義。

3.3類模板中對象的定義

由于類模板中成員數據的數據類型不確定,所以對象的成員數據類型也不確定,因此在定義對象時,首先要確定對象的成員數據的類型,即類模板成員數據的類型。

4結論

通過上述舉例,我們發現C++中的模板是一種靈活性強,可重用性高,可擴展性強的泛型程序設計機制。使用模板可以大大減少開發時間,可以把用同一個算法適用于不同類型數據,只需在編譯時確定具體的數據類型則可。從多態的角度考慮,模版模擬多態要比C++類繼承實現多態效率要高, 無虛函數, 無繼承。

參考文獻:

[1] 鄭莉,董淵,何江舟.C++語言程序設計(第4版)[M]. 北京;清華大學出版社,2014.

[2] 趙海廷. C++語言的模板及其應用[J]. 武漢工程職業技術學院學報,2004.

[3] 王昌晶,薛錦云. 從C++ 模板到STL[J]. 江西師范大學學報(自然科學版),2004.

[4] 霍有亮. 基于C++的模板與重用[J]. 西北大學學報(自然科學版),1998.

[5] 王波. C++語言中的模板應用[J]. 微型機與應用,2003.

[6] 朱素英. C++語言中模板應用研究[J]. 婁底師專學報,2004.

【通聯編輯:梁書】

主站蜘蛛池模板: 国产亚洲成AⅤ人片在线观看| 国产精品三级av及在线观看| 亚洲欧洲日本在线| 国禁国产you女视频网站| 国产高清免费午夜在线视频| 午夜精品一区二区蜜桃| 亚洲精品图区| 一区二区自拍| 999在线免费视频| 久草视频精品| 免费jjzz在在线播放国产| 婷婷亚洲综合五月天在线| 精品国产免费人成在线观看| 国产精品林美惠子在线观看| 日日噜噜夜夜狠狠视频| 人妻中文久热无码丝袜| 国产簧片免费在线播放| 最新无码专区超级碰碰碰| 亚洲无码一区在线观看| 毛片视频网址| 日韩无码真实干出血视频| 国产精品无码影视久久久久久久| 无码区日韩专区免费系列| 国产人妖视频一区在线观看| 亚洲精品动漫在线观看| 亚国产欧美在线人成| 98精品全国免费观看视频| 亚洲色精品国产一区二区三区| 欧美丝袜高跟鞋一区二区| 久久综合干| 69av免费视频| 性视频久久| 免费看黄片一区二区三区| 久久国产av麻豆| 欧美亚洲国产日韩电影在线| a天堂视频| 亚洲中文制服丝袜欧美精品| 人禽伦免费交视频网页播放| 亚洲综合第一页| 成色7777精品在线| 亚洲第一黄片大全| 呦女精品网站| 国产又大又粗又猛又爽的视频| 欧美激情,国产精品| 大香网伊人久久综合网2020| 久久久91人妻无码精品蜜桃HD| 日本黄网在线观看| 国产精品毛片一区| 欧美激情视频一区| 成年免费在线观看| 麻豆国产在线不卡一区二区| 亚洲欧美成人综合| 国产一级妓女av网站| 中美日韩在线网免费毛片视频| 黄色网在线免费观看| 国产尤物jk自慰制服喷水| 69av免费视频| 自拍亚洲欧美精品| 全部免费毛片免费播放| 亚洲国产在一区二区三区| 亚洲美女高潮久久久久久久| h视频在线观看网站| 狠狠色丁香婷婷| 一级香蕉人体视频| 亚洲天堂网2014| 国产人免费人成免费视频| 亚洲欧美另类日本| 久久精品波多野结衣| 久久国产免费观看| 国产精品爆乳99久久| 欧洲一区二区三区无码| 免费无码又爽又黄又刺激网站| 91视频99| 激情亚洲天堂| 91午夜福利在线观看精品| 亚洲欧美不卡| 看国产一级毛片| 无套av在线| 国产一区二区三区免费观看| 国产v欧美v日韩v综合精品| 内射人妻无套中出无码| 青青网在线国产|