函式模板 C 01

2021-10-13 05:32:15 字數 1723 閱讀 9924

在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後加乙個識別符號構成。在...