模板類的預設模板引數 模板函式不支援預設模板引數

2021-06-12 00:07:37 字數 1241 閱讀 2921

在這個學期開始學習使用模板,當然模板早在大一期間就用到了一些,但是都是作為練習語法用的。這個學期中使用了大量的模板來進行類的設計與實現,具體的來說應該幾乎是這個學期的所有的c++**都是用的模板實現的吧。有些即使沒那麼大的使用模板價值,但是還是為了積累模板的經驗而硬使用了模板。寫了這麼多的模板後,也就是在上個星期才偶爾在乙個帖子裡看到預設模板引數這個概念,寫了那麼多的**了才知道這個概念感覺很羞愧啊,就去學習了學習。其實這個如果對照普通型別的預設變數來看待,其實也是不難理解的。

就像標題說的那樣:模板類支援預設模板引數、模板函式不支援預設模板引數,這裡的模板函式包括全域性函式與類成員函式兩種。

使用說明一:

//模板類的預設模板引數

templateclass myclass

myclass(){}

~myclass(){}

typea getvaluea()

typeb getvalueb();

//類成員函式模板

templatevoid memberfuntion(t tval)

主函式的呼叫:

myclass<> cls(1,2.0f); //因為已經是預設的模板引數了,所以可以不用在例項化類的時候宣告型別,但是尖括號是必須要有的

cout

執行的結果是:

使用說明二:

對於主函式還可以這麼呼叫:

myclassclsch('z','l');  //這裡主動宣告了類模板的引數型別,覆蓋了原有的預設模板引數型別

cout<

執行結果:

說明:"hello"的預設型別是常量指標(指向常量字串的指標),因為乙個字串是被當做是乙個常量對待的,儲存於常量區。

使用說明三:

//類成員函式模板

templatevoid memberfuntion(t tval)

{ cout<

更多請看c++標準勘誤:c++標準核心語言缺陷報告

模板 函式模板 類模板

模板主要是針對資料型別,不同的資料型別卻具有相同的操作形式,比如說,同樣是做入棧,int和double由於資料型別不一樣,需要做兩個棧才能滿足需求,誠然可以使用函式過載,但是終歸棧的操作是一樣的,只是資料型別不一樣。所以在此基礎上,假設,我們首先將所有的資料型別視為乙個大類,將它引數化,等到要用的時...

模板函式,模板類

使用模板函式 include stdafx.h include iostream include string using namespace std template template t add const t t1,const t t2 int tmain int argc,tchar arg...

函式模板,類模板

來自 函式模板 template t getmax t a,t b 呼叫 int i 5,j 6,k long l 10,m 5,n k getmax i,j n getmax l,m 也可以雙型別 template t getmin t a,u b return a呼叫 int i,j long ...