#include<iostream>
using namespace std;
template<typename T>
class Add{
public:
Add(T a,T b,T c);
T sum();
private:
T x,y,z;
};
template<typename T>
Add<T>::Add(T a,T b,T c)
{ x=a;
y=b;
z=c;
}
template<typename T>
T Add<T>::sum()
{ return x+y+z;}
template<typename T1,typename T2,typename T3>
class Add_{
public:
Add_(T1 a,T2 b,T3 c);
T2 sum_();
private:
T1 x;
T2 y;
T3 z;
};
template<typename T1,typename T2,typename T3>
Add_<T1,T2,T3>::Add_(T1 a,T2 b,T3 c)
{ x=a;
y=b;
z=c;
}
template<typename T1,typename T2,typename T3>
T2 Add_<T1,T2,T3>::sum_()
{ return x+y+z;}
int main()
{Add<int> sum1(3,4,5);
cout<<"三个整数之和:"<<sum1.sum()<<endl;
Add<double> sum2(2.3,4.5,2.3);
cout<<"三个双精度数之和:"<<sum2.sum()<<endl;
Add_<int,double,double> sum_1(3,3.4,3.5);
cout<<"一个整数两个双精度数之和:"<<sum_1.sum_()<<endl;
return 0;
}
using namespace std;
template<typename T>
class Add{
public:
Add(T a,T b,T c);
T sum();
private:
T x,y,z;
};
template<typename T>
Add<T>::Add(T a,T b,T c)
{ x=a;
y=b;
z=c;
}
template<typename T>
T Add<T>::sum()
{ return x+y+z;}
template<typename T1,typename T2,typename T3>
class Add_{
public:
Add_(T1 a,T2 b,T3 c);
T2 sum_();
private:
T1 x;
T2 y;
T3 z;
};
template<typename T1,typename T2,typename T3>
Add_<T1,T2,T3>::Add_(T1 a,T2 b,T3 c)
{ x=a;
y=b;
z=c;
}
template<typename T1,typename T2,typename T3>
T2 Add_<T1,T2,T3>::sum_()
{ return x+y+z;}
int main()
{Add<int> sum1(3,4,5);
cout<<"三个整数之和:"<<sum1.sum()<<endl;
Add<double> sum2(2.3,4.5,2.3);
cout<<"三个双精度数之和:"<<sum2.sum()<<endl;
Add_<int,double,double> sum_1(3,3.4,3.5);
cout<<"一个整数两个双精度数之和:"<<sum_1.sum_()<<endl;
return 0;
}