欢迎来到天天文库
浏览记录
ID:34419180
大小:590.25 KB
页数:24页
时间:2019-03-06
《第 6 章(1)━━函数模板、类模板》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++程序设计第6章(1)━━函数模板、类模板主要内容关于模板函数模板的定义函数模板实例化关于类模板类模板的定义类模板实例化顺序表类模板的定义关于模板关于模版:①为提高程序的通用性,必须使其代码不受数据类型的限制,即建立与数据类型无关的通用函数或通用类,方法是将其中的数据类型参数化,在函数或类的定义中引入数据类型参数。②模板是函数或类的通用样板,当函数或类需要处理多种不同类型数据时,可通过模板来创建具有通用功能的函数或类,即函数模板或类模板,以达到通用的目的。③由于一个函数模板可以支持多个具有不同数据类型形参的函数,从而简化了重载函数的设计。④C++国际标准ISO1
2、4882将模板正式引入标准库,以模板类取代传统的C++类。⑤程序中的软件模块由模板构造,即函数模板实例化产生相应的模板函数,类模板实例化产生相应的模板类,这种程序设计类型称为参数化程序设计。函数模板的定义函数模板的定义:template<模板形参列表>返回值类型函数名(函数形参列表){函数体}①模板形参有两种:类型参数、常规参数①函数的返回值类型、形参类型以及函数体中,②类型参数:由typename或class后加一个标均可使用前面模板形参表中给出的类型参数识符构成,该标识符用在紧跟其后的函数中来代表某种潜在的数据类型,该类型参数代代表一种潜在的数据类型。表的具体类型只有在调用函
3、数时根据给出的③常规参数:由类型符(如int、float)后加一模板实参才能确定!个标识符构成,该标识符用在紧跟其后的函数②在函数体中,还可使用前面模板形参表中给中代表一个潜在的常量。出的常规参数来代表一个潜在的常量,该常④模板形参格式:typename形参名规参数代表的具体值只有在调用函数时根据class形参名给出的模板实参才能确定!因此其对应的模数据类型形参名板实参必须是常量表达式。【例】(四个求绝对值的重载函数)(求绝对值的函数模板)#include#includeintabs(intx)template{
4、return(x>0?x:-x);}Tabs(Tx)函数模板longabs(longx){return(x>0?x:-x);}{return(x>0?x:-x);}voidmain()floatabs(floatx){inta=-96;longb=78;{return(x>0?x:-x);}floatc=-3.6;doubled=5.8;doubleabs(doublex)cout<<“
5、a
6、=”<(a)<0?x:-x);}cout<<“
7、b
8、=”<(b)<9、c10、=”11、<(c)<12、d13、=”<(d)<14、a15、=”<16、b17、=”<18、a19、=96cout<<“20、c21、=”<22、b23、=78cout<<“24、d25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
9、c
10、=”
11、<(c)<12、d13、=”<(d)<14、a15、=”<16、b17、=”<18、a19、=96cout<<“20、c21、=”<22、b23、=78cout<<“24、d25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
12、d
13、=”<(d)<14、a15、=”<16、b17、=”<18、a19、=96cout<<“20、c21、=”<22、b23、=78cout<<“24、d25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
14、a
15、=”<16、b17、=”<18、a19、=96cout<<“20、c21、=”<22、b23、=78cout<<“24、d25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
16、b
17、=”<18、a19、=96cout<<“20、c21、=”<22、b23、=78cout<<“24、d25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
18、a
19、=96cout<<“
20、c
21、=”<22、b23、=78cout<<“24、d25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
22、b
23、=78cout<<“
24、d
25、=”<26、c27、=3.6}类型”上不同,28、可通过一个通用的函数模29、d30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“31、a32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
26、c
27、=3.6}类型”上不同,
28、可通过一个通用的函数模
29、d
30、=5.8板,替代多个具有不同类型形参的函数。函数模板实例化函数模板实例化:①编译系统生成函数模板的某个具体函数版本的过程称为函数模板实例化,每一个实例就是一个模板函数。②编译系统根据每一次函数调用时所(显式或隐式)给出的类型实参生成相应的函数调用式,并生成相应的函数版本,即模板函数。在实例化过程中,用类型实参替代函数模板中相应的类型形参。调用式中显式给出模板实参模板函数的显式调用:函数名<模板实参列表>(函数实参列表)【例】上例中的四次调用:cout<<“
31、a
32、=”<(a)<33、b34、=”<35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
33、b
34、=”<
35、(b)<36、c37、=”<(c)<38、d39、=”<(d)<
36、c
37、=”<(c)<38、d39、=”<(d)<
38、d
39、=”<(d)<
此文档下载收益归作者所有