標籤:
模板函數定義檔案function1.h:
#ifndef FUNCTION1_H#define FUNCTION1_H#include <cstring>#include <string>template <typename T>inline T const& max(T const&a , T const& b){ return a < b ? b : a;}template <typename T>inline T* const& max(T* const& a, T* const& b){ return *a < *b ? b : a;}inline char const* const& max(char const* const& a, char const* const& b){ return std::strcmp(a, b) < 0 ? b : a;}template <typename RT, typename T1, typename T2>inline RT max(T1 const& a, T2 const&b){ RT c = a < b ? (RT)b : (RT)a; return c;}#endif // FUNCTION1_H
測試檔案main.h:
#include <iostream>#include <cstdlib>#include "function1.h"int main(){ int a = 10; int b = 32; std::cout << ::max(a, b) << std::endl; std::string str1 = "hello"; std::string str2 = "world"; std::cout << ::max(str1, str2) << std::endl; int* p1 = &b; int* p2 = &a; std::cout << *::max(p1, p2) << std::endl; char const* s1 = "cat"; char const* s2 = "hat"; std::cout << ::max(s1, s2) << std::endl; return 0;}
結果:
函數模板樣本(一)