模板函数定义文件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; }
结果: