函式模板是通用的函式描述,它們使用泛型來定義函式,其中的泛型可用具體的型別替換。通過將型別作為引數傳遞給模板,可使編譯器生成該型別的函式。
由於模板允許以泛型(而不是具體型別)的方式編寫程式,因此有時候也被稱為通用程式設計。
template
<
class
anytype
>
void
swap
(anytype &x,anytype &y)
ps:在c++11中,可以將class替換為typename
這是一種泛型程式設計。(類名定義為anytype也體現了這一點)凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。
函式模板可以過載,只要形參表(如上:anytype &x,anytype &y)
或者型別參數列(如上:class anytype)不同即可
直接上**
#include
using
namespace std;
template
<
typename t,
typename func>
void
map(t s,t e,t x,func op)
}int
cube
(int x)
double
square
(double x)
int a[5]
=,b[5]
;double d[5]
=,c[5]
;int
main()
關於這塊,需要注意的點是了解編譯器將模板函式例項化後函式的確定形態,避免出現一些小錯誤。(錯誤判斷參數列引數型別等)
例項化後如下:
模板 函式模板
c 程式設計 資料結構與程式設計方法 例15.8 利用函式過載技術,求兩個整數 字元 浮點數或字串中的較大值,需要編寫4個函式larger。而c 通過提供函式模板,簡化了過載函式據的過程。include using namespace std template type,模板的形參,用於確定函式的形...
《函式模板學習筆記》
函式模板 函式模板的目的 當函式的邏輯相同,但函式引數型別不同時,讓型別引數化。include using namespace std template 通知編譯器開始泛型程式設計 void tprint t1 x,t2 str1 兩個不同引數的情況 template void tswap t a,...
C 函式模板和排序的函式模板 學習筆記
我們在使用過載函式時,只是使用了函式名,而函式體還是得分別定義,在c 中函式模板為我們很好的解決了這個問題.1.函式模板的宣告 函式模板可以用來建立乙個通用的函式,以支援多種不同的形參,避免過載函式的函式體重複設計。它的最大特點是把函式使用的資料型別作為引數。函式模板的宣告形式為 template ...