c++类模板

来源:互联网 发布:overwolf是什么软件 编辑:程序博客网 时间:2024/05/22 12:47

如果要比较两个数的大小,比如要比较两个整型数的大小

可以这样写个类:

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);