淺析C++中類模板的用法
C++類模板
C++類模板是一種用于創(chuàng)建通用類的工具,它允許我們定義一個(gè)通用類,支持多種類型。
定義類模板
C++中定義類模板的語(yǔ)法如下:
template<class T> class ClassName { public: ClassName(T arg1, T arg2, ...){ // constructor code } T getMax(); T getMin(); // ... private: T arg1, arg2, ...; };
其中,template<class T>
表明T是一個(gè)類型參數(shù),T是我們要定義的通用類型,一旦T被定義,我們就可以使用它來(lái)定義類的成員。
接下來(lái),我們可以使用類模板來(lái)創(chuàng)建具有通用功能的類的對(duì)象。例如,考慮下面的示例:
#include<iostream> using namespace std; template<class T> class Example { public: Example(T a, T b) { this->a = a; this->b = b; } void show() { cout<< "a: "<< a <<endl; cout<< "b: "<< b <<endl; } private: T a; T b; }; int main() { Example<int> example_int(5, 6); example_int.show(); Example<string> example_string("hello", "world"); example_string.show(); return 0; }
上面的代碼中,我們定義了一個(gè)類模板Example,并在其中定義了兩個(gè)類型相同的數(shù)據(jù)成員a和b。我們可以使用類模板Example創(chuàng)建支持整數(shù)類型和字符串類型的對(duì)象example_int和example_string。執(zhí)行程序輸出如下:
a: 5
b: 6
a: hello
b: world
類模板成員函數(shù)的定義
C++類模板可以定義成員函數(shù),成員函數(shù)可以是訪問(wèn)控制的任何類型:public、protected和private。
定義成員函數(shù)的形式與普通類相同:
template<class T> class Example { public: Example(T a, T b) { this->a = a; this->b = b; } void show() { cout<< "a: "<< a <<endl; cout<< "b: "<< b <<endl; } T max() { return a > b ? a : b; } private: T a; T b; }; int main() { Example<int> example_int(5, 6); example_int.show(); Example<string> example_string("hello", "world"); example_string.show(); cout << example_int.max() << endl; cout << example_string.max() << endl; return 0; }
在上面的示例中,我們新增了成員函數(shù)T max()
,它返回兩個(gè)數(shù)據(jù)成員a和b中的較大值。
輸出的結(jié)果如下:
a: 5
b: 6
a: hello
b: world
6
world
注意我們調(diào)用成員函數(shù)max的時(shí)候可以使用不同類型的實(shí)例。
總結(jié)
在這篇文章中,我們介紹了C++類模板的基礎(chǔ)知識(shí)。我們可以使用類模板來(lái)定義通用的類,支持多種類型。我們還了解了如何定義類模板,并創(chuàng)建了支持整數(shù)類型和字符串類型的對(duì)象。最后我們學(xué)習(xí)了類模板成員函數(shù)的定義,以及如何在調(diào)用時(shí)指定不同的數(shù)據(jù)類型。
到此這篇關(guān)于淺析C++中類模板的用法的文章就介紹到這了,更多相關(guān)C++類模板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的推箱子游戲
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的推箱子游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01VC通過(guò)托盤(pán)圖標(biāo)得到該所屬進(jìn)程的實(shí)現(xiàn)代碼
這篇文章主要介紹了VC通過(guò)托盤(pán)圖標(biāo)得到該所屬進(jìn)程的實(shí)現(xiàn)代碼,為了方便大家使用特將多個(gè)代碼分享給大家,需要的朋友可以參考下2021-10-10C++ map的簡(jiǎn)單使用實(shí)現(xiàn)
map是STL的一個(gè)關(guān)聯(lián)容器,它以<key,value>一對(duì)一的形式存儲(chǔ),且map的內(nèi)部自建一個(gè)紅黑樹(shù),使得其可以自動(dòng)排序,本文就介紹一下C++ map的簡(jiǎn)單使用,感興趣的可以了解一下2021-05-05C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)
下面小編就為大家?guī)?lái)一篇C++靜態(tài)成員函數(shù)不能調(diào)用非靜態(tài)成員變量(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12C語(yǔ)言實(shí)現(xiàn)外賣管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)外賣管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼
本篇文章主要介紹了C++實(shí)現(xiàn)洗牌發(fā)牌排序功能的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10C++調(diào)用matlab引擎實(shí)現(xiàn)三維圖的繪制
這篇文章主要為大家詳細(xì)介紹了C++如何調(diào)用matlab引擎實(shí)現(xiàn)三維圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++和Matlab有一定的幫助,需要的可以參考一下2022-12-12