欢迎来到天天文库
浏览记录
ID:26947565
大小:349.00 KB
页数:40页
时间:2018-11-30
《《模板及其应》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十三讲模板及其应用13.1函数模板13.2类模板13.3类模板应用13.1函数模板13.2类模板13.3类模板应用1.函数模板的概念通常设计的算法(处理语句)是可以处理多种数据类型的,但目前处理相同的问题,仍要分别定义多个类似的函数。13.1函数模板13.2类模板13.3类模板应用intmax(inta,intb){//求两个整数中较大值if(a>b)returna;elsereturnb;}doublemax(doublea,doubleb){//求两个浮点数中较大值if(a>b)returna;elsereturnb;}charmax(chara,charb){...//求两个字
2、符中较大值}例1.求两个数据中较大值(P.300)13.1函数模板13.2类模板13.3类模板应用如果“提取”出一个可变化的类型参数T,就可以“综合”成同一个函数(模板),它实际上代表着一组函数:Tmax(Ta,Tb){if(a>b)returna;elsereturnb;}13.1函数模板13.2类模板13.3类模板应用在C++中定义完整的函数模板max时,格式如下:templateTmax(Ta,Tb){if(a>b)returna;elsereturnb;}13.1函数模板13.2类模板13.3类模板应用2.函数模板的说明template<模板参数表><函数定义>
3、template:关键字,指明为函数模板或类模板。模板参数表:用尖括号“<>”括起来,一个或多个模板参数,用逗号“,”分开。模板参数:class<参数名>。参数名是标识符,其对应实参可以是系统预定义类型或用户自定义类型。13.1函数模板13.2类模板13.3类模板应用函数定义:和一般函数定义相同。<返回类型><函数名>(<参数表>){<函数体>}13.1函数模板13.2类模板13.3类模板应用注意:1)应在“返回类型”或“形参表”或“函数体”中使用上述的“类型形参名”。2)调用处则类似于一般函数,用户只需给出具体的实参。3)模板函数调用时,不进行实参到形参类型的自动转换。13.1函数模
4、板13.2类模板13.3类模板应用例2:函数模板实例一Program9-1.cpp(P.302)例3:函数模板实例二Program9-2.cpp(P.303)例4:函数模板实例三Program9-3.cpp(P.303-304)13.1函数模板13.2类模板13.3类模板应用利用类模板(带类型参数或普通参数的类),一次就可定义出具有共性的一组类。即,可使得所定义类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值都可以是任意类型的。13.1函数模板13.2类模板13.3类模板应用1.类模板定义格式template<模板参数表>class<类模板名>{类模板定义体}templat
5、e:关键字,指明本说明为类模板说明。模板参数表:用尖括号“<>”括起来的若干个类型形参或者普通形参。说明类型形参时,使用“class<类型形参名>”的方式。说明普通形参时,使用“<类型><普通形参名>”的方式。13.1函数模板13.2类模板13.3类模板应用class:关键字,指明定义的是类模板。类模板名:用户自定义标识符。类模板定义体:实际上是类定义体,以类模板参数作为某个类或某个类型名来使用。13.1函数模板13.2类模板13.3类模板应用注意:2)利用类模板说明类对象时,要随类模板名同时给出对应于类型形参或普通形参的具体实参(从而实例化为一个具体的类)。说明格式为:类模板名<形参
6、1的相应实参,...,形参n的相应实参>类型形参的相应实参为类型名,而普通形参的相应实参必须为常量。1)类定义体中应使用上述的“类型形参名”及“普通形参名”。13.1函数模板13.2类模板13.3类模板应用3)类模板的成员函数既可以在类体内进行说明(自动按内联函数处理),也可以在类体外进行说明。在类体外说明(定义)时使用如下格式:template<形参1的说明,...,形参n的说明>返回类型类模板名<形参1的名字,...,形参n的名字>::函数名(形参表){函数体};上述的“形参1的名字”来自于“形参1的说明”,由“甩掉”说明部分的“类型”而得,是对类型形参或普通形参的使用。而“类模板
7、名<形参1的名字,...,形参n的名字>::”所起的作用正是在类体外定义成员函数时在函数名前所加的类限定符!13.1函数模板13.2类模板13.3类模板应用例5,对具有一个类型参数T的类模板TestClass,在类体外定义其成员函数getData时的大致样式如下:templateTTestClass::getData(形参表){...//函数体};其中的“TestClass::”所起的作用正是在类体外定义成员函数时在
此文档下载收益归作者所有