Lession 27 函式模板

2021-06-23 08:45:15 字數 950 閱讀 5257

模板: 把型別作為引數傳遞進去的;

template《模板形參表》

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

template// 函式

模板:是模板的定義,定義中用的是通用的一類函式

t max(t& a, t& b)

max<3,4>// 模板

函式:是實實在在的函式定義       編譯的時候就確定

有時可以省略型別形參: max(3,4);

模板 -> 函式    : 例項化

如果出現傳遞兩次整形的情況,例項化函式只生成乙個;

模板引數沒有隱式型別轉換!嚴格遵循型別的定義

模板引數(class t)對應的引數,不能有預設值;

模板形參可以包含非型別的值,這個是常量

template int size>    // 非型別引數 

t* alloc()

max(3, 3.4);  // 錯誤,型別存在分歧

可以宣告為inline

template int size>    // 非型別引數 

inline t* alloc()

和普通函式一樣,也可以過載;   // 本質還是函式的過載(即相應模板例項化出來的模板函式)

函式呼叫時會有:

1. 精確匹配

2. 型別提公升

3. 型別轉換  // int -> double

4. 類型別轉換  // 子類->基類

模板函式匹配:

1. 精確匹配

2.尋找函式模板,尋找能精確匹配在函式

3. 型別轉換

模板 函式模板

c 程式設計 資料結構與程式設計方法 例15.8 利用函式過載技術,求兩個整數 字元 浮點數或字串中的較大值,需要編寫4個函式larger。而c 通過提供函式模板,簡化了過載函式據的過程。include using namespace std template type,模板的形參,用於確定函式的形...

函式模板和模板函式

1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...

函式模板和模板函式

1.函式模板的宣告和模板函式的生成 1.1函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template 返回型別 函式名 參數列 其中,template是定義模板函式的關鍵字...