c templates 函式模板

2021-07-24 15:32:55 字數 1615 閱讀 2780

1、定義函式模板:

[cpp]view plain

copy

template

<

typename

t>  

inline

t const

& max(t 

const

& a, t 

const

& b)  

解釋:template表明了這是乙個函式模板,<>指定了模板引數區域,typename表明了後面的引數是乙個型別名, t是模板引數,它可以用來指定所有的型別,a和b是呼叫引數,位於模板函式名稱後面,在一對()內進行宣告。這裡typename可以用class來取代,但最好使用typename。

2、呼叫函式模板

[cpp]view plain

copy

#include

#include

using

namespace

std;  

template

<

typename

t>  

inline

t const

& max(t 

const

& a, t 

const

& b)  

intmain()  

呼叫函式模板時,模板被編譯兩次:

第一次:例項化之前,檢查模版**本身,檢視語法是否正確。

第二次:在例項化期間,檢查模版**,檢視是否所有的呼叫都有效。

3、過載函式模板

函式模版也可以進行過載,乙個非模版函式可以和乙個同名的函式模版同時存在,呼叫的優先順序是非模板函式的優先順序高。<>符號顯式指定乙個空的模板實參列表,告訴編譯器只有模板才能匹配這個呼叫,而且所有的模板引數都應該根據呼叫實參演繹出來。函式的所有過載版本的宣告都應該位於該函式被呼叫的位置之前。

例子說明:

[cpp]view plain

copy

#include

#include

using

namespace

std;  

inline

intconst

& max(

intconst

& a, 

intconst

& b)//(1)

template

<

typename

t>  

inline

t const

& max(t 

const

& a, t 

const

& b)//(2)

template

<

typename

t>  

inline

t const

& max(t 

const

& a, t 

const

& b,t 

const

& c)//(3)

intmain()  

模板 函式模板

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

函式模板和模板函式

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

函式模板和模板函式

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