ps如何做网站首页,上海网站建设哪里便宜,做网站如何下载别人网站图片,社交网站做强归纳编程学习的感悟#xff0c; 记录奋斗路上的点滴#xff0c; 希望能帮到一样刻苦的你#xff01; 如有不足欢迎指正#xff01; 共同学习交流#xff01; #x1f30e;欢迎各位→点赞 #x1f44d; 收藏⭐ 留言#x1f4dd; 勤奋#xff0c;机会#xff0c;乐观…
归纳编程学习的感悟 记录奋斗路上的点滴 希望能帮到一样刻苦的你 如有不足欢迎指正 共同学习交流 欢迎各位→点赞 收藏⭐ 留言 勤奋机会乐观是成功的三要素
一起加油 目录
编辑
一、类模板的定义和使用 例如声明两个类分别用来比较整数和浮点数的大小。
说明
例:编写一个类模板比较两个整数、浮点数和字符数据的大小。 说明
二、总结
三、共勉 一、类模板的定义和使用 昨天介绍了函数模板建立了一个通用函数将很多个处理不同数据类型、相同逻辑功能的函数抽象成一个统一的函数用来简化程序设计。对于类的声明也存在同样的问题。如几个类的逻辑功能相同但数据类型不同却要重复性的写很多代码。 例如声明两个类分别用来比较整数和浮点数的大小。
class Compare_int{private:int x,y;public:Compare_int(int a,int b){xa;yb;}int max(int a,int b){return ab?a:b } int min(int a,int b){return ab?a:b }
};
class Compare_float{private:float x,y;public:Compare_float(float a,float b){xa;yb;}float max(float a,float b){return ab?a:b;}float min(float a,float b){return ab?a:b;}
}; 这两个类的声明的类型不同但逻辑功能非常相似有很强的重复性。我们可以运用函数横板的思路为类也声明一个通用的类模板使得实例化类中的某些数据成员、某些成员函数的参数或者返回值能取任意的数据类型。 类模板的一般定义格式如下: template class T class 类名 { } 说明 (1)template是定义类模板的关键字总是放在模板定义和声明的最前面。(2)classT必须用尖括号括起来其中T为类型参数它实际上是一个虚拟的类型名当使用类模板时T被替换为某种实际的数据类型(例如int,char,float 等)从而实现类多用。T也可以用其他合法的标识符替换。(3)类的定义方式与之前讲到的类的定义类似。(4)类模板是对一组类的抽象某一个类是对类模板的实例化。 在声明了一个类模板后如何使用它如何使它变成一个实际的类又如何生成一个具体的对象? 一般形式为:类模板名实际类型名 对象名(参数表); 下面通过具体的例子说明类模板的定义和使用方法.
例:编写一个类模板比较两个整数、浮点数和字符数据的大小。
#includeiostream
using namespace std;
template class T
class Compare{private:T x,y;public:Compare(T a,T b){xa;yb;}T max();T min();
};
template class T
T CompareT::max()
{return xy?x:y;
}
template class T
T CompareT::min()
{return xy?x:y;
}
int main()
{Compareint cmpi(4,9);cout两个整数的最大值cmpi.max()endl; cout两个整数的最小值cmpi.min()endl; Comparefloat cmpf(3.93,7.78);cout两个小数的最大值cmpf.max()endl; cout两个小数的最小值cmpf.min()endl; Comparechar cmpc(k,q);cout两个字符的最大值cmpc.max()endl;cout两个字符的最小值cmpc.min()endl;return 0;
} 说明 该程序定义了一个类模板 CompareT其模板类型参数为 T。在该类模板中构造函数的两个形参 a、b两个私有的数据成员 x、y以及两个成员函数 max()和 min()的返回类型都是用模版类型参数T声明的变量。 该程序的主函数中生成了三个模板类并生成了三个对象其语句分别为:Compareintcmpi(4,9);(此时T被指定的类型为int类对象名为cmpi。)Comparefloatcmpf(3.93,7.78);(此时T被指定的类型为float类对象名为cmpf。)Comparecharcmpc(k,p)(此时T被指定的类型为char类对象名为cmpc。)总结定义类模板时应注意以下几点: (1)声明类模板时要在类的前面加一行语句:
templateclass 虚拟类型参数
(2)用类模板定义对象时用以下形式: 类模板名实际类型名 对象名; 类模板名实际类型名 对象名(参数表); (3)如果在类模板外定义成员函数应写成类模板形式 : templateclass 虚拟类型参数 函数类型类模板名虚拟类型参数::成员函数名(函数形参表) {......} 二、总结 template是定义类模板的关键字总是放在模板定义和声明的最前面。classT必须用尖括号括起来其中T为类型参数它实际上是一个虚拟的类型名。类模板是对一组类的抽象某一个类是对类模板的实例化。
三、共勉 以上就是我对C模板——(3)类模板的理解希望本篇文章对你有所帮助也希望可以支持支持博主后续博主也会定期更新学习记录记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对C模板的理解请持续关注我哦