template<typename T>
//声明和实现在一起
T const& Max(T const& a, T const& b)
{
return a > b ? a : b;
}
//必须再次声明
template<typename T>
void show(T const& a)
{
cout << a << endl;
}
#include "ctemplate.h"
int _tmain(int argc, _TCHAR* argv[])
{
string str1 = "abc";
string str2 = "acd";
cout << Max(1,2) << endl;
cout << Max(str1, str2) << endl;
cout << Max<char>(3, 'a') << endl;
cout << Max<double>(3.4, 3.5) << endl;
show("aa");
}
成员函数模板,类的成员函数也可以定义为模板
class Printer {
public:
template<typename T>
void print(const T& t) {
cout << t <<endl;
}
};
Printer p;
p.print<const char*>("abc");
//打印abc