C++程序设计 湖南大学 杜四春、银红霞 第12章模板 12.1模板的概念 122函数模板 12.3类模板 12.4模板应用实例
C++程序设计 湖南大学 杜四春、银红霞 第12章 模板 12.1 模板的概念 12.2 函数模板 12.3 类模板 12.4 模板应用实例
C++程序设计 湖南大学 杜四春、银红霞 模板是C++支持参数化多态的工具,使用 模板可以使用户为类或者函数声明一种一般模 式,使得类中的某些数据成员或者成员函数的 参数、返回值取得任意类型
C++程序设计 湖南大学 杜四春、银红霞 模板是C++支持参数化多态的工具,使用 模板可以使用户为类或者函数声明一种一般模 式,使得类中的某些数据成员或者成员函数的 参数、返回值取得任意类型
C++程序设计 湖南大学 杜四春、银红霞 12.1模板的概念 所谓模板是一种使用无类型参数来产生一系列函 数或类的机制,是C++的一个重要特性。它的实现, 方便了更大规模的软件开发。 若一个程序的功能是对某种特定的数据类型进行 处理,则可以将所处理的数据类型说明为参数,以便 在其他数据类型的情况下使用,这就是模板的由来。 模板是以一种完全通用的方法来设计函数或类而不必 预先说明将被使用的每个对象的类型。通过模板可以 生类或函数的集合,使它们操作不同的数据类型, 从而避免需要为每一种数据类型产生一个单独的类或 函数
C++程序设计 湖南大学 杜四春、银红霞 12.1 模板的概念 所谓模板是一种使用无类型参数来产生一系列函 数或类的机制,是C++的一个重要特性。它的实现, 方便了更大规模的软件开发。 若一个程序的功能是对某种特定的数据类型进行 处理,则可以将所处理的数据类型说明为参数,以便 在其他数据类型的情况下使用,这就是模板的由来。 模板是以一种完全通用的方法来设计函数或类而不必 预先说明将被使用的每个对象的类型。通过模板可以 产生类或函数的集合,使它们操作不同的数据类型, 从而避免需要为每一种数据类型产生一个单独的类或 函数
C++程序设计 湖南大学 杜四春、银红霞 例如,设计一个求两参数最大值的函数,不使用 模板时,需要定义四个函数: int max(int a, int breturn(a>b)?a,b; 1 long max(long a, long breturn(a>b)?a, b; 9 double max(double a, double breturn(a>b)a,b; 1 char max(char a, char b)return(a>b)?a, b 若使用模板,则只定义一个函数: Template<class type>type max( type a, type b) freturn(a>b)a, b; 1
C++程序设计 湖南大学 杜四春、银红霞 例如,设计一个求两参数最大值的函数,不使用 模板时,需要定义四个函数: int max(int a,int b){return(a>b)?a,b;} long max(long a,long b){return(a>b)?a,b;} double max(double a,double b){return(a>b)?a,b;} char max(char a,char b){return(a>b)?a,b;} 若使用模板,则只定义一个函数: Template<class type>type max(type a,type b) {return(a>b)?a,b;}
C++程序设计 湖南大学 杜四春、银红霞 C+程序由类和函数组成,模板也分为类模板 ( class template)和函数模板( function template)。在 说明了一个函数模板后,当编译系统发现有一个对应 的函数调用时,将根据实参中的类型来确认是否匹配 函数模板中对应的形参,然后生成一个重载函数。该 重载函数的定义体与函数模板的函数定义体相同,它 称之为模板函数( template function) 同样,在说明了一个类模板之后,可以创建类模 板的实例,即生成模板类
C++程序设计 湖南大学 杜四春、银红霞 C++程序由类和函数组成,模板也分为类模板 (class template)和函数模板(function template)。在 说明了一个函数模板后,当编译系统发现有一个对应 的函数调用时,将根据实参中的类型来确认是否匹配 函数模板中对应的形参,然后生成一个重载函数。该 重载函数的定义体与函数模板的函数定义体相同,它 称之为模板函数(template function)。 同样,在说明了一个类模板之后,可以创建类模 板的实例,即生成模板类