泛型 模板函式 模板類

2021-07-03 16:08:31 字數 1108 閱讀 7350

函式模板的性質

1) 函式模板並不是真正的函式,它只是c++編譯生成具體函式的乙個模子。

2) 函式模板本身並不生成函式,實際生成的函式是替換函式模板的那個函式,比如上例中的add(sum1,sum2),

這種替換是編譯期就繫結的。

3) 函式模板不是只編譯乙份滿足多重需要,而是為每一種替換它的函式編譯乙份。

4) 函式模板不可以設定預設模板實參。比如template 不可以。

5) 函式模板不允許自動型別轉換。

c++模版函式的語法

template 

函式返回型別 函式名(形參列表…)

上面兩行可以合併成一行。

例如:下面的幾種寫法是等效的並且class 和typename是可以互換的。

template 

t1 fun(t1, t2, int )

template  t1 fun(t1, t2, int )

template 

t1 fun(t1, t2, int )

template  t1 fun(t1, t2, int )

c++模版類的語法

template 

class 類名

成員的實現…

例如://類宣告部分,有兩個模板引數t1,t2

template 

class a

//類實現部分

template 

int a:: fun1(t1 x, int y )

template 

t2 a:: fun2(t1 x, t2 y)

//使用類a

int main( )

由上例可以看出, 類模板引數t1,t2對類的成員變數和成員函式均有效。

在c++程式設計中,當你要實現的乙個類的某些成員函式和成員變數的演算法

資料型別有關,可以考慮用類模板。c++版的資料結構演算法大都用類模板實現。

類模板的性質

1) 類模板可以設定預設模板實參。

2) 類模板不是真正的類,它只是c++編譯器生成具體類的乙個模子。

C 泛類 函式模板 類模板

1.函式模板 1.1 函式模板的概念 函式模板代表了乙個函式家族,該函式模板與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本。1.2 函式模板格式 template 返回值型別 函式名 引數列表 template templatevoid swap t1 x,t1 y tips ty...

C 泛型程式設計 函式模板 類模板

以前我們寫過乙個簡單的交換函式。我們不難發現交換函式是與型別有很大關係的,int,double.那麼如何實現乙個通用的交換函式呢?void swap int left,int right void swap double left,double right void swap char left,c...

模板 函式模板 類模板

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