欢迎来到天天文库
浏览记录
ID:21318022
大小:612.00 KB
页数:45页
时间:2018-10-18
《群体类和群体数据的组织》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章群体类和群体数据的组织本章主要内容模板群体类群体数据的组织第一部分—模板函数模板类模板函数模板template返回类型函数名(形参表){函数体;}函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。函数模板的定义形式为:模板参数表意义:对于功能完全一样,只是参数类型不同函数,能写一段通用代码适用于多种不同的数据类型,会使代码的可重用性大大提高,从而提高软件的开发效率。函数模板//将add函数定义成了一个函数模板:templateTadd(Tx,Ty){returnx+
2、y;}例如:注意:template关键字表示声明的是模板。<>中是模板的参数表,可以有一项或多项,其中的类型名称为参数化类型,是一种抽象类型或可变类型。class是类型关键字,也可以用typename作为关键字。函数返回值类型可以是普通类型,也可以是模板参数表中指定的类型。模板参数表中的参数类型可以是普通类型。函数模板说明:根据<>中给出的具体类型,用类似于函数调用实参与形参结合的方式,将模板参数表中的参数化类型一一实例化成具体的类型,函数中的参数化类型也一一实例化。如果模板参数表中有形式参数,还需要用常量表达式去初始化。例如:使用add(8,9)将Tadd(Tx
3、,Ty)实例化成:doubleadd(double,double)使用sum将Tsum()实例化成:intsum(),size获得初值100;函数模板定义后,就可以用它生成各种具体的函数(称为模板函数)。在函数调用时,用函数模板生成模板函数实际上就是将模板参数表中的参数化类型根据实参实例化(具体化)成具体类型。这个过程称为模板的实例化。函数模板实例化分为显式实例化与隐式实例化。(1)显式实例化函数名<具体类型名1,具体类型名2,...,常量表达式>(实参表)函数模板例如:使用add(‘A’,‘B’)将Tadd(Tx,Ty)实例化成:charadd(char,ch
4、ar)(2)隐式实例化:隐式实例化的格式为函数调用式,实例化过程是在实参与形参结合时,用实参的类型实例化形参对应的参数化类型。注意:使用隐式实例化无法初始化模板参数表中的普通类型的形参,如果模板参数表中使用普通类型参数,必须使用显式初始化。函数模板//*******************************fun.cpp**函数模板********************************/#includeusingnamespacestd;templateT1add(T1x,T2y){cout<<"("<5、eof(T1)<<","<6、(8,4)17类模板定义的语法为:template为模板关键字。模板参数表中的类型为参数化(parameterized)类型,也称可变类型,类型名为class(或typename);模板参数表中的类型也可包含普通类型,普通类型的参数用来为类的成员提供初值。1.类模板的定义template<模板参数表>class类名{成员名;};类模板是能根据不同参数建立不同类型成员的类。类模板中的数据成员、成员函数的参数、成员函数的返回值可以取不同类型,在实例化成对象时,根据传入的参数类型,实例化成具体类型的对象。类模板也称模板类。类模板例如,下面定义了一个模板类Student,为了增强类的适用7、性,将学号设计成参数化类型,它可以实例化成字符串、整型等;将成绩设计成参数化类型,它可以实例化成整型、浮点型、字符型(用来表示等级分)等;1.类模板的定义template//TNO,TScore为参数化类型classStudent{private:TNOStudentID[num];//参数化类型数组,存储姓名TScorescore[num];//参数化类型数组,存储分数public:TNOTopStudent(){ret
5、eof(T1)<<","<6、(8,4)17类模板定义的语法为:template为模板关键字。模板参数表中的类型为参数化(parameterized)类型,也称可变类型,类型名为class(或typename);模板参数表中的类型也可包含普通类型,普通类型的参数用来为类的成员提供初值。1.类模板的定义template<模板参数表>class类名{成员名;};类模板是能根据不同参数建立不同类型成员的类。类模板中的数据成员、成员函数的参数、成员函数的返回值可以取不同类型,在实例化成对象时,根据传入的参数类型,实例化成具体类型的对象。类模板也称模板类。类模板例如,下面定义了一个模板类Student,为了增强类的适用7、性,将学号设计成参数化类型,它可以实例化成字符串、整型等;将成绩设计成参数化类型,它可以实例化成整型、浮点型、字符型(用来表示等级分)等;1.类模板的定义template//TNO,TScore为参数化类型classStudent{private:TNOStudentID[num];//参数化类型数组,存储姓名TScorescore[num];//参数化类型数组,存储分数public:TNOTopStudent(){ret
6、(8,4)17类模板定义的语法为:template为模板关键字。模板参数表中的类型为参数化(parameterized)类型,也称可变类型,类型名为class(或typename);模板参数表中的类型也可包含普通类型,普通类型的参数用来为类的成员提供初值。1.类模板的定义template<模板参数表>class类名{成员名;};类模板是能根据不同参数建立不同类型成员的类。类模板中的数据成员、成员函数的参数、成员函数的返回值可以取不同类型,在实例化成对象时,根据传入的参数类型,实例化成具体类型的对象。类模板也称模板类。类模板例如,下面定义了一个模板类Student,为了增强类的适用
7、性,将学号设计成参数化类型,它可以实例化成字符串、整型等;将成绩设计成参数化类型,它可以实例化成整型、浮点型、字符型(用来表示等级分)等;1.类模板的定义template//TNO,TScore为参数化类型classStudent{private:TNOStudentID[num];//参数化类型数组,存储姓名TScorescore[num];//参数化类型数组,存储分数public:TNOTopStudent(){ret
此文档下载收益归作者所有