1、2019年6月28日星期五,C+面向对象程序设计,第7章 模板,7.1 模板的概念 7.2 函数模板 7.3 类模板,2019年6月28日星期五,C+面向对象程序设计,7.1 模板的概念,一个程序的功能是对某种特定的数据类型进行处理,为了让程序以同样的方式处理其他任何数据类型的数据引入了模板的概念。 C+程序由函数和类组成,模板也分为函数模板和类模板。在使用模板时根据实参的数据类型确定模板参数的数据类型,从而得到模板的一个可用实例。,2019年6月28日星期五,C+面向对象程序设计,7.2 函数模板,函数的功能相同,但处理的数据类型不同,可以使用C+提供的函数模板避免函数代码的重复编写。 函数
2、模板的定义形式为:模板函数以关键字template开头 ,T为类型参数,可以用来指定函数模板的形参类型、返回值类型和模板函数局部变量的类型。,template 函数返回类型 函数名(函数形参表) 函数体的定义,2019年6月28日星期五,C+面向对象程序设计,7.2 函数模板,函数模板应用举例。函数模板能够根据不同类型的输入参数自动生成合适的重载函数。,template T max(T x,T y) return (xy?x:y); int a=1,b=5; max(a,b); 类型参数的确定为int,编译器以函数模板为样板,生成一个函数:int max(int x,int y)return
3、(xy? x:y);,2019年6月28日星期五,C+面向对象程序设计,7.3 类模板,类的功能相同,但处理的数据类型不同,可以使用C+提供的类模板避免类代码的重复编写。 类模板的定义形式为:类成员声明的方法与普通类的定义几乎相同,只是在它的各个成员(数据成员和函数成员)中通常要用到模板的数据类型参数T 。,template class 类名 类成员声明,2019年6月28日星期五,C+面向对象程序设计,7.3 类模板,类模板应用举例。,template class TemClass private:T x; public: void TemClass(T m)x=m; T GetX()return x; ; TemClass intObject; 类型参数的确定为int,编译器以类模板为样板,生成一个类:class TemClassprivate:T x; public:void TemClass(T m)x=m; T GetX()return x;;,