类模板 类内定义
#include<iostream>
using namespace std;// 函数模板template<typename T> p121,p15
template<class T> //template<class 类型参数名>
class Compare
{
private:
T x,y;
public:
// Compare(T a,T b)
// {
// x=a;
// y=b;//构造函数
// }
Compare(T a,T b):x(a),y(b){}
T max()
{ return (x>y)?x:y; }
T min()
{ return (x<y)?x:y; }
};
int main()
{
Compare<int>cmp1(3,7); //类模板名<实际类型名>对象名(参数表);
cout<<cmp1.max()<<" "<<cmp1.min()<<endl;
Compare<float>cmp2(3.7,2.9);
cout<<cmp2.max()<<" "<<cmp2.min()<<endl;
Compare<char>cmp3('a','A');
cout<<cmp3.max()<<" "<<cmp3.min()<<endl;
return 0;
}
类模板 类外定义
#include<iostream>
using namespace std;//p121,p15 函数模板template<typename T>
template<class T>
class Compare
{
private:
T x,y;
public:
Compare(T a,T b)
{
x=a;
y=b;//构造函数
}
T max();
// { return (x>y)?x:y; }
T min();
// { return (x<y)?x:y; }
};
template<class T> // template<class 虚拟类型参数>
T Compare<T>::max() // 函数类型 类模板名<虚拟类型参数>::成员函数名(函数形参表)
{ return (x>y)?x:y; }
template<class T>
T Compare<T>::min()
{ return (x<y)?x:y; }
int main()
{
Compare<int>cmp1(3,7);
cout<<cmp1.max()<<" "<<cmp1.min()<<endl;
Compare<float>cmp2(3.7,2.9);
cout<<cmp2.max()<<" "<<cmp2.min()<<endl;
Compare<char>cmp3('a','A');
cout<<cmp3.max()<<" "<<cmp3.min()<<endl;
return 0;
}