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国产精品| 日韩在线2020专区| 国产原创演绎剧情有字幕的| 亚洲熟女偷拍| 欧美一级视频免费| 72种姿势欧美久久久大黄蕉| 四虎免费视频网站| 欧美、日韩、国产综合一区| 农村乱人伦一区二区| 国产成熟女人性满足视频| 亚洲成网站| 91国内外精品自在线播放| 国产a网站| 国产成人永久免费视频| 91亚洲视频下载| 久久伊伊香蕉综合精品| 午夜福利免费视频| 四虎亚洲国产成人久久精品| 欧美午夜网| 日韩美一区二区| 91免费观看视频| 国产主播在线一区| 国产成人精品在线| 国产主播在线一区| 香蕉视频国产精品人| 91毛片网| 国产精品所毛片视频| 97se亚洲| 在线欧美日韩国产| 免费一级全黄少妇性色生活片| 成人午夜久久| 国产精品白浆在线播放| 亚洲色图欧美激情| 日本免费新一区视频| 中文字幕乱码二三区免费| 一区二区三区成人| 国产又爽又黄无遮挡免费观看| 91九色视频网| 欧美国产视频| 国产美女在线免费观看| 亚洲国产精品久久久久秋霞影院| 国产亚洲精品无码专| 国产成熟女人性满足视频| 日本成人福利视频| m男亚洲一区中文字幕| 中文纯内无码H| 国产精品欧美激情| 中文字幕在线一区二区在线| 欧美亚洲国产精品第一页| 日韩天堂在线观看| 99在线视频网站| 亚洲午夜国产精品无卡| 亚洲视频四区| 欧洲欧美人成免费全部视频 | av在线5g无码天天| 国产精品入口麻豆| 婷婷99视频精品全部在线观看| 午夜日b视频| 永久免费精品视频| 国产成人超碰无码| 久久国产亚洲偷自| 欧洲精品视频在线观看| 毛片网站观看| 99精品视频九九精品| 玖玖免费视频在线观看| 欧美性天天| 色悠久久久| 国产精品三级专区| 亚洲福利网址| 99久久人妻精品免费二区| 日韩av无码DVD| 国外欧美一区另类中文字幕| 欧美日韩一区二区在线免费观看| 久久精品娱乐亚洲领先| 九色视频线上播放| 亚洲高清在线天堂精品| 亚洲国产亚综合在线区| 日本不卡在线| 国产成人久久综合777777麻豆| 国产精品亚洲片在线va| 欧美成人午夜视频|