13 函式模板

2021-06-26 03:33:35 字數 1891 閱讀 4974

--- 函式模板

--- 提供一種特殊函式可用不同型別進行呼叫

--- 型別可以被引數化

templatevoid swap(t& a,t& b)

說明:-template 關鍵字用於宣告開始泛型程式設計

-typename 關鍵字用於宣告泛指的型別

函式模板的應用

-- 自動型別推導呼叫

-- 具體型別顯示呼叫

int a=1;

int b=2;

swap(a,b);// 自動型別推導呼叫

float fa=3;

float fb=4;

swap(fa,fb);// 顯示型別呼叫

對泛型程式設計的理解

--- 編譯器並不是把函式模板處理成能夠處理任意型別的函式

--- 編譯器從函式模板通過具體型別產生不同的函式

--- 編譯器會對函式模板程序兩次編譯

--- 在宣告的對方對函式模板**本身進行編譯

--- 在呼叫的地方對引數替換後的**進行編譯

函式模板可以像普通函式一樣被過載

*: c++編譯器優先考慮普通函式

*: 如果函式模板可以產生乙個更好的匹配,那麼選擇模板

*: 可以通過空模板引數類表的語法限定編譯器只通過模板編譯

int max(int a,int b)

templatet max(t a,t b)

templatet max(t a,t b,t c)

int main()

cout<('a',100)《將返回值型別引數宣告到第乙個引數位置,呼叫時只需顯示宣告返回型別引數即可。

templatert add(t1 a,t2 b)

cout<('a',100)<

(1) 函式模板其實是乙個具有相同行為的函式家族

(2) 函式模板可以根據型別實參對函式進行推導呼叫

(3) 函式模板可以顯示的指定型別引數

(4) 函式模板可以被過載

模板 函式模板

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

函式模板和模板函式

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

函式模板和模板函式

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