c template筆記 1 模板函式

2021-06-29 16:05:31 字數 2567 閱讀 6734

template 

inline t const& max (t const& a, t const& b)

#include 

#include

#include

"max.hpp"

int main()

輸出結果

::max(1,2); //ok

//::max(1,1.2);//wrong

::max(static_cast

(4),4.1);//ok

若兩個引數不正確,或者不支援模板定義的特性,編譯時則會出錯

template 

inline t1 const& max (t1 const& a, t2 const& b)

示例

double i = 42.1;

std::cout << "max(7,i): "

<< ::max(7,i) << std::endl;

返回值是t1,所以返回是int型別,結果是42,出錯了

定義3個引數,第3個引數用於表示返回值型別

template 

inline t3 const& max (t1 const& a, t2 const& b)

測試

double i = 42.1;

std::cout << "max(7,i): "

<< ::max(7,i) << std::endl;

返回正確的42.1

// maximum of two int values

inline int const& max (int const& a, int const& b)

// maximum of two values of any type

template

inline t const& max (t const& a, t const& b)

// maximum of three values of any type

template

inline t const& max (t const& a, t const& b, t const& c)

int main()

特別注意::max<>(7, 42);這句的寫法 

注意:自動型別轉換

::max('a', 42.7); 只適用於常規函式,'a』會完成自動型別轉換

#include 

#include

#include

// maximum of two values of any type

template

inline t const& max (t const& a, t const& b)

// maximum of two pointers

template

inline t* const& max (t* const& a, t* const& b)

// maximum of two c-strings

inline char const* const& max (char const* const& a,

char const* const& b)

int main ()

注意每個過載函式必須存在著一定的差異.

// maximum of two values of any type

template

inline t const& max (t const& a, t const& b)

// maximum of three values of any type

template

inline t const& max (t const& a, t const& b, t const& c)

// because the following declaration comes

// too late:

// maximum of two int values

inline int const& max (int const& a, int const& b)

3引數的max呼叫的是2引數模板函式,而非最後定義的max非模板函式

#include 

// note: reference parameters

template

inline t const& max (t const& a, t const& b)

int main()

s是std:: string型別,而非char陣列,所以也出錯

#include 

// note: nonreference parameters

template

inline t max (t a, t b)

int main()

只有最後型別不符合的編譯不通過

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...

c template筆記 1 模板函式

template inline t const max t const a,t const b include include include max.hpp int main 輸出結果 max 1,2 ok max 1,1.2 wrong max static cast 4 4.1 ok若兩個引數...

C template(模板)的使用

在c 中,針對於 泛型 的程式設計時,需要使用模板,泛型 任何資料型別。比如 做乙個同時支援int和double型的加法運算,並輸出。傳統的做法 include using namespace std int add int a,int b double add double a,double b ...