20.1模板的概念C++程序由类和函数组成C++的模板也分为:函数模板和类模板函数模板是一种抽象通用的函数,用它可生成一批具体的函数。这些由函数模板经实例化生成的具体函数称为模板函数
• C++程序由类和函数组成。 • C++的模板也分为:函数模板和类模板。 • 函数模板 ✓ 是一种抽象通用的函数,用它可生成一批具 体的函数。 ✓ 这些由函数模板经实例化生成的具体函数称 为模板函数
20.1模板的概念类模板是一种抽象通用的类,用它可生成一批具体的类。这些由类模板经实例化生成的具体类称为模板类。·因此,可以使用一个带多种不同数据类型的函数和类。而不必显示记忆针对不同的数据类型的各种具体版本
• 类模板 ✓ 是一种抽象通用的类,用它可生成一批具体 的类。 ✓ 这些由类模板经实例化生成的具体类称为模 板类。 • 因此,可以使用一个带多种不同数据类型的 函数和类。 • 而不必显示记忆针对不同的数据类型的各种 具体版本
20.2为什么要用模板1、关于函数考察两个swap()函数。一个交换两个整型数,另一个交换两个浮点数。:两个swap()的主体行为是一样的。。一个处理int型,另一个处理float型
1、关于函数 • 考察两个swap( )函数。 • 一个交换两个整型数,另一个交换两个浮点 数。 • 两个swap( )的主体行为是一样的。 • 一个处理int型,另一个处理float型
20.2为什么要用模板void swap(int & a,int& b){int temp= a;a=b;b =temp;函数体行为一样。但是处理的数void swap(float & a,float & b)据类型不同。{float temp = a ;a=b;b =temp ;
void swap( int & a , int & b ) { int temp = a ; a = b ; b = temp ; } void swap( float & a , float & b ) { float temp = a ; a = b ; b = temp ; } 函数体行为一 样。 但是处理的数 据类型不同
20.2为什么要用模板Ⅱ交换任何一对类类型对象,可以定义如下:void swap(T& a,T & b){T temp=a;a=b;b =temp;这样对任一类型T的两个对象x1和x2函数调用swap(x1,x2)总能使编译系统理解其交换意义。,否则,没交换一对新类型的对象,都要定义一个执行同样操作的重载函数。,有了函数模板后,重载就不必要了
//交换任何一对类类型对象,可以定义如下: void swap( T & a , T & b ) { T temp = a ; a = b ; b = temp ; } • 这样对任一类型T的两个对象x1和x2。 • 函数调用swap( x1 , x2 )总能使编译系统理解其交换意 义。 • 否则,没交换一对新类型的对象,都要定义一个执 行同样操作的重载函数。 • 有了函数模板后,重载就不必要了