#include <iostream>
#include <cstring>
using namespace std;
template <class T>
class Max4
{
T a,b,c,d; //四个类型为T的私有数据成员
T Max(T a,T b){return (a>b)?a:b;}
//语句1,类型为T,参数类型为T,返回a、b二者最大值的私有成员函数
public:
Max4(T,T,T,T); //声明构造函数,含4个类型为T的参数
T Max(void); //声明返回值类型为void的公有成员函数
};
template <class T> //定义成员函数必须再次声明类模板
Max4<T>::Max4(T x1,T x2,T x3,T x4):a(x1),b(x2),c(x3),d(x4) { } //语句2
template <class T> //定义成员函数必须再次声明类模板
T Max4<T>::Max(void) {return Max(Max(a,b),Max(c,d));}
//语句3,定义类Max4的成员函数Max(void),定义时要将Max<T>看作整体
int main( )
{
Max4 <char> C('W','z','a','A'); //语句4,比较字符
Max4 <int> A(-25,-67,-66,-256); //语句5,比较整数
Max4 <double> B(1.25,4.3,-8.6,3.5); //语句6,比较双精度实数
cout<<C.Max( )<<" "<<A.Max( )<<" "<<B.Max( )<<endl; //语句7
return o;
}
