EC+面向对象程序设计 计算机与信息学院 罗宪
C++面向对象程序设计 计算机与信息学院 罗宪
第六章模板 本章主要内容: >模板的概念 >函数模板 >类模板
第六章 模板 本章主要内容: ➢模板的概念 ➢函数模板 ➢类模板
第一节模板的概念 问题的提出: C++语言是一种强类型语言,因此象求二个数的最大 值函数时,不同类型的数据需要用重载的方式实现。 如 int max(int x,int y) i return x>y?x: y;i float max(float x, float y) i return x>y?x: y; double max(double x, double y) i return x>y?x: y; 三个函数的实现方法是相同的,只不过数据类型不 样 >问题:能否使这一类向题只写一代码来观? >解决的办法:采用模板实现
第一节 模板的概念 一、问题的提出: ➢C++语言是一种强类型语言,因此象求二个数的最大 值函数时,不同类型的数据需要用重载的方式实现。 如: int max(int x,int y) { return x>y?x:y;} float max(float x,float y) { return x>y?x:y;} double max(double x,double y) { return x>y?x:y;} ➢三个函数的实现方法是相同的,只不过数据类型不一 样。 ➢问题:能否使这一类问题只写一段代码来实现? ➢解决的办法:采用模板实现
第一节模板的概念 #includesiostream.h> #<.h> template <class T> eI max(Ix,I y return x>y?x:y;) void main( { int il=10,i2=20; float fl=30.5,f2=13.9 double dl=48.255,d2=36358; char cl='A’,c2=a cout<< the max of il, i2 is: <<max(i1, i2)<<endl; cout <<the max of fl, f2 is: <<max(f1, f2)<<endl cout <<the max of dl, d2 is: <<max(dl, d2)<<endl; cout <<the max of cl, c2 is: " <<max(cl, c2)<<endl;
第一节 模板的概念 二、模板的概念 ➢例【6.1】用函数模板实现不同类型的二个数最大值 的计算。 #include<iostream.h> #include<string.h> template <class T> T max(T x,T y) {return x>y?x:y;} void main() {int i1=10,i2=20; float f1=30.5,f2=13.9; double d1=48.255,d2=36.358; char c1='A',c2='a'; cout <<"the max of i1,i2 is:"<<max(i1,i2)<<endl; cout <<"the max of f1,f2 is:"<<max(f1,f2)<<endl; cout <<"the max of d1,d2 is:"<<max(d1,d2)<<endl; cout <<"the max of c1,c2 is:"<<max(c1,c2)<<endl; }
第一节模板的概念 模板—实现代码重用的一种工具实现类型参数 化:即把类型定义为一种参数(模板的实质) 三、模板的分类 >函数模板 亠>类模板。 模板 (函数模板、类模板) 实例化 实例化 匚模板函数 模板类 实例化 对象
第一节 模板的概念 ➢模板——实现代码重用的一种工具——实现类型参数 化:即把类型定义为一种参数(模板的实质)。 三、模板的分类 ➢函数模板 ➢类模板。 模 板 (函数模板、类模板) 模板函数 对 象 模板类 实例化 实例化 实例化