函数模板 函数模板是指带有类型参数的函数定义,其一般 格式如下: template <class T1,class T2,... <返回值类型><函数名>(<参数表>) X 其中,T1、T2等是函数模板的参数: 函数的<返回值类型>、<参数表>中的参数类型以及 函数体中的局部变量的类型可以是:T1、T2等 例如 template <class T> T max(T a,T b) return a>b?a:b;
◼ 函数模板是指带有类型参数的函数定义,其一般 格式如下: template <class T1, class T2, ...> <返回值类型> <函数名>(<参数表>) { ...... } 其中,T1、T2等是函数模板的参数: • 函数的<返回值类型> 、<参数表>中的参数类型以及 函数体中的局部变量的类型可以是:T1、T2等 ◼ 例如 template <class T> T max(T a, T b) { return a>b?a:b; } 函数模板
用函数模板实现类属排序函数 ■在C++中,实现类属函数的另外一种办法是用函数模 板。 template <class T> void sort(T elements[],unsigned int count) { /取第个元素 elements[i] /比较第个和第j个元素的大小 elements[i]elements [j] /交换第i个和第j个元素 T temp=elements [i]; elements[i]elements [j]; elements[j]temp;
用函数模板实现类属排序函数 ◼ 在C++中,实现类属函数的另外一种办法是用函数模 板。 template <class T> void sort(T elements[], unsigned int count) { //取第i个元素 elements[i] //比较第i个和第j个元素的大小 elements[i] < elements [j] //交换第i个和第j个元素 T temp=elements [i]; elements[i] = elements [j]; elements[j] = temp; }
int a[100]; sort(a,100);/对int类型数组进行排序 double b[200]; sort(b,200);/对double类型数组进行排序 Ac[300]: /类A中需重载操作符:<,需要时 /还应自定义拷贝构造函数和重载操作符= sort(c,300);/对A类型数组进行排序
int a[100]; sort(a,100); //对int类型数组进行排序 double b[200]; sort(b,200); //对double类型数组进行排序 A c[300]; //类A中需重载操作符:<,需要时 //还应自定义拷贝构造函数和重载操作符= sort(c,300); //对A类型数组进行排序
函数模板的使用一一实例化 函数模板定义了一系列重载的函数。 要使用函数模板所定义的函数(称为模板函数) 首先必须要对函数模板进行实例化: 。给模板参数提供一个类型作为值,从而生成具体的函数。 函数模板的实例化通常是隐式的: 由编译程序根据函数调用的实参类型自动地把函数模板 实例化为具体的函数。 这种确定函数模板实例的过程叫做模板实参推演 (template argument deduction)
函数模板的使用--实例化 ◼ 函数模板定义了一系列重载的函数。 ◼ 要使用函数模板所定义的函数(称为模板函数), 首先必须要对函数模板进行实例化: • 给模板参数提供一个类型作为值,从而生成具体的函数。 ◼ 函数模板的实例化通常是隐式的: • 由编译程序根据函数调用的实参类型自动地把函数模板 实例化为具体的函数。 • 这种确定函数模板实例的过程叫做模板实参推演 (template argument deduction)
int a[100]; sort (a,100); 实例化: void sort(int elements[],unsigned int count){...... double b[2001; sort (b,200); 实例化: void sort(double elements[],unsigned int count){......} Ac[300]; sort(c,300); 实例化: void sort(A elements[],unsigned int count){......}
int a[100]; sort (a,100); 实例化: void sort(int elements[], unsigned int count) { ...... } double b[200]; sort (b,200); 实例化: void sort(double elements[], unsigned int count) { ...... } A c[300]; sort(c,300); 实例化: void sort(A elements[], unsigned int count) { ...... }