在c++中,資料的型別也可以通過引數來傳遞,在函式定義時可以不指明具體的資料型別,當發生函式呼叫時,編譯器可以根據傳入的實參自動推斷資料型別。這就是型別的引數化。
函式模板是一種特殊的函式,可以使用不同的型別進行呼叫,對於功能相同的函式,不需要重複編寫**,並且函式模板與普通函式看起來很類似,區別就是型別可以被引數化。
模板函式的語法:
template 返回值型別 函式名(形參列表)
型別引數可以有多個,它們之間以逗號,
分隔。型別引數列表以< >
包圍,形式引數列表以( )
包圍。
typename
關鍵字也可以使用class
關鍵字替代,它們沒有任何區別。c++ 早期對模板的支援並不嚴謹,沒有引入新的關鍵字,而是用 class 來指明型別引數,但是 class 關鍵字本來已經用在類的定義中了,這樣做顯得不太友好,所以後來 c++ 又引入了乙個新的關鍵字 typename,專門用來定義型別引數。不過至今仍然有很多**在使用 class 關鍵字,包括 c++ 標準庫、一些開源程式等。
#define _crt_secure_no_warnings
#include
using
namespace std;
#if 0
//int型別資料交換
void
myswap
(int
& a,
int& b)
//double型別
void
myswap
(double
& a,
double
& b)
#endif
//模板技術 型別引數化 編寫**可以忽略型別
//為了讓編譯器區分是普通函式 模板函式
template
<
classt1,
class
t2>
//template告訴編譯器 ,下面寫模板函式
void
myswap
(t& a, t& b)
void
test01()
intmain
(void
)
函式模板跟普通函式一樣,也可以被過載
#define _crt_secure_no_warnings
#include
using
namespace std;
template
<
class
t>
intmyadd
(t a,t b)
//普通函式可以進行自動型別轉換
//函式模板必須嚴格型別匹配
intmyadd
(int a,
int c)
void
test01()
//函式模板被過載
template
<
class
t>
void
print
(t a)
template
<
class
t>
void
print
(t a , t b)
intmain
(void
)
01 C 函式模板
本階段主要針對泛型程式設計和stl技術做詳細講解,c 更深層的使用 模板的概念 模板就是建立通用的模具,大大提高復用性 模板的特點 模板不可以直接使用,它只是乙個框架 模板的通用並不是萬能的 函式模板 c 另一種程式設計思想稱為泛型程式設計,主要利用的技術就是模板 c 提供兩種模板機制 函式模板和類...
c 函式模板
include using namespace std template t max t a,t b,t c int main int main int i1 185,i2 76,i3 567,i double d1 56.63,d2 90.23,d3 3214.78,d long g1 67854...
c 函式模板
關鍵字template總是放在模板的電腦關於與宣告的最前面,關鍵字後面是用逗號分隔的模板參數列,該列表是模板參數列,不能為空。模板引數可以是乙個模板型別引數,它代表了一種型別 也可以是乙個模板非型別引數,它代表了乙個常量表示式。模板型別引數由關鍵字class或typename後加乙個識別符號構成。在...