C 學習 模板

2021-08-07 05:00:17 字數 1564 閱讀 7299

當你在寫**的時候可能會遇到這樣的情況,多處地方都需要呼叫同乙個功能/方法,但是我們不知道呼叫者傳遞進來的引數型別,以及這個方法的返回型別,或許你可能想到的是過載或者重寫,但是還有另一種方式實現就是-- 模板。

當然除此之外,還有類模板,它是實現**重用的一種工具。

模板可以說是分為兩種型別,一種是類模板,一種是函式模板,先來說下函式模板。

場景:兩個數相加求和,我們並不知道它是int,double還是long的兩個數值相加。那我們可能會這樣寫:

int sum(int x, int y)

double sum(double x, double y)

long sum(long x, long y)

可以看到,按上面這種寫法,3個方法中的函式體都一樣,也就是說其實他們執行的業務都一樣,都是兩個數

相加,只是兩個數的型別不同。這是不是與開頭所說的模板的介紹相似,那我們就用函式模板來實現下這個方法。

函式模板的宣告格式:

template返回型別 函式名(模板形參表)

template返回型別 函式名(模板形參表)

以上兩種方式都可以,用 class的方式是早期c++的宣告方式,template t為型別引數

sum函式的具體宣告

#includeusing namespace std;

templatet sum(t x, t y)

int main()

int sum(int x, int y)

templateclass 類名

其中的typename以及class與函式模板相同。宣告了類模板之後還需要定義其物件。

定義類模板物件的格式:

類模板名《實際型別名》物件名(實參列表);

接下來使用類模板來實現下剛開始的那個列子,宣告乙個類模板,其中含有乙個兩個數相加求和的方法。

#includeusing namespace std;

templateclass a

t sum()

private:

t a, b;

};int main()

其中如果返回值是void,那返回值型別可以省略。

我們把上面的例子改下

#includeusing namespace std;

templateclass a;

templatea::a(t x, t y)

templatet a::sum()

int main()

int main(){

cout<

以上基本上就是模板的介紹,可以根據上面的例子寫寫**,這樣有助於理解。這裡僅僅只是對模板進行乙個初步

的探索,要多理解在什麼情況下需要使用模板,靈活運用到專案中能大大提高你的開發效率。

C 之模板 模板的學習 學習模板

c 之模板 模板學習 學習模板 模板就是建立通用的模具,大大提高復用性 函式模板 c 提供兩種模板機制函式模板和類模板 函式模板語法 函式模板作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的型別來代表 語法 template typename t 函式宣告或定義解釋 t...

C 模板學習

模板定義 模板就是實現 重用機制的一種工具,它可以實現型別引數化,即把型別定義為引數,從而實現了真正的 可重用性。模版可以分為兩類,乙個是函式模版,另外乙個是類模版。類模板 允許使用者為類定義一種模式,使得類中的某些資料成員 某些成員函式的引數 某些成員函式的返回值,能夠取任意型別 包括系統預定義的...

C 模板學習

我們已經學過過載 overloading 對過載函式而言,c 的檢查機制能通過函式引數的不同及所屬類的不同。正確的呼叫過載函式。比如。為求兩個數的最大值。我們定義max 函式須要對不同的資料型別分別定義不同過載 overload 版本號。函式1.intmax int x,int y 函式2.floa...