templateinline 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;返回值是t1,所以返回是int型別,結果是42,出錯了std::cout << "max(7,i): "
<< ::max(7,i) << std::endl;
定義3個引數,第3個引數用於表示返回值型別
template測試inline t3 const& max (t1 const& a, t2 const& b)
double i = 42.1;返回正確的42.1std::cout << "max(7,i): "
<< ::max(7,i) << std::endl;
// maximum of two int values特別注意::max<>(7, 42);這句的寫法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('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 type3引數的max呼叫的是2引數模板函式,而非最後定義的max非模板函式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)
#includes是std:: string型別,而非char陣列,所以也出錯// note: reference parameters
template
inline t const& max (t const& a, t const& b)
int main()
#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 ...