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是定義模板函式的關鍵字...