如果要比较两个数的大小,比如要比较两个整型数的大小
可以这样写个类:
class Compare_int
{
public:
Compare_int(int arg1, int arg2):number1(arg1),number2(arg2){}
int max()
{
if (number1 > number2)
return number1;
else
return number2;
}
private:
int number1;
int number2;
};
如果要比较两个数是浮点数,就得这样写一个类:
class Compare_float
{
public:
Compare_float:(float arg1, float arg2):number1(arg1),number2(arg2){}
float max()
{
if (number1 > number2)
return number1;
else
return number2;
}
private:
float number1;
float number2;
};
如果是double类型的呢?然后又要写一个类似于上面的double类型的类。这样是不是很麻烦?
麻烦总有解决办法,这个解决办法就是类模板。
有两个或多个类,其功能是相同的,仅仅是数据类型不同,就可以用类模板来解决问题。
template<class type>
class Compare
{
public:
Compare:(type arg1, type arg2):number1(arg1),number2(arg2){}
type max();
private:
type number1;
type number2;
};
/***注意,以下的函数定义是不对的*/
type Compare::max()
{
//内容
}
/***************************/
/****正确的定义*********/
template <class type>
type Compare <type>::max()
{
return (number1 > number2) ? number1 : number2;
}
/*然后是如何定义一个类模板的对象*/
/*类模板是这样定义对象的*/
Compare <类型> 对象名(初始化的值);
/*比如定义一个int形的对象*/
Compare <int> compare(5, 10);
/*如果是float形的*/
Cpmpare <float> compare(5.1f, 18.6f);