1. 分别举例说明用于算法抽象的函数模板和用于数据抽象的类模板。
- 函数模板:
template<class T>
T add( T a, T b )//函数模板
{
return a + b;
}
add<int> ( 10, 17 );//模板实例
complex c1, c2;
add<complex> ( c1, c2 );
函数模板是对算法相似,但支持的数据类型不同的一组操作的提炼,以提高程序的重用性。函数模板的实例就是一个用于特定类型的普通函数。
类模板:
使用类模板使用户可以为类定义一种模式,使得类中的某些数据成员、某些数据成员函数的参数、返回值和局部变量能够取任意类型(包括系统预定义和用户自定义)
class intArray {
int *array;
int size;
public:
intArray( int );
int& operator[](int);
};
class charArray {
char *array;
int size;
public:
charArray( int );
char& operator[](int);
};
template<class T> class Array
{
T* array;
int size;
public:
Array( int );
T& operator[ ]( int );
};