模板
模椒与使用 模板就是使程序能够对不同类型的数据进行相后 方式的处理。C艹中的模板分为类模板和函数模板 类模板 说明类模板的一般格式为: template<类型参数表> class类模板名 i private 私有成员定义 protected 保护成员定义 public 公有成员定义};
模板与使用 模板就是使程序能够对不同类型的数据进行相同 方式的处理。C++中的模板分为类模板和函数模板。 类模板 说明类模板的一般格式为: template <类型参数表> class 类模板名 { private: 私有成员定义 protected: 保护成员定义 public: 公有成员定义 };
模板与使用 其中:(1类型形式参数表可以包含基本数据类型,也 可以包含类类型,如果是类类型,则须加前缀 class 当参数有多个时,需用逗号隔开。 (2)类模板中的成员函数的定义,可以放在类模板的定 义体中(此时与类中的成员函数的定义方法一致) 也可以放在类模板的外部定义成员函数.此时成员函 数的定义格式如下: template<类型形式参数表> 函数值的返回类型类模板名<类型名表>::成员函 数(形参){函数体} 其中:类模板名即是类模板中定义的名称;类型名 表即是类模板定义中的类型形式参数表中的参数名
模板与使用 其中:(1)类型形式参数表可以包含基本数据类型,也 可以包含类类型,如果是类类型,则须加前缀class。 当参数有多个时,需用逗号隔开。 (2)类模板中的成员函数的定义,可以放在类模板的定 义体中(此时与类中的成员函数的定义方法一致), 也可以放在类模板的外部定义成员函数,此时成员函 数的定义格式如下: template <类型形式参数表> 函数值的返回类型 类模板名<类型名表>::成员函 数(形参) { 函数体} 其中:类模板名即是类模板中定义的名称;类型名 表即是类模板定义中的类型形式参数表中的参数名
模板与使用 (3)利用类模板定义的只是对类的描述,它本身还不是 个实实在在的类。因此是类模板。 (4)要定义类模板的对象(即实例),痹要用下列格式 的语句 类模板名<类型实际参数表>对象名; 例】定义类模板ABC,内含成员函数set和get。用 ABC生成对象abcl和abC2。它们的数组元素数不同, 显示的结果也不同。 include <iostream.h ∥/定义类模板ABC template <class t, int I> class abC i private T array ∥定义数组 array
模板与使用 (3)利用类模板定义的只是对类的描述,它本身还不是 一个实实在在的类。因此是类模板。 (4)要定义类模板的对象(即实例),需要用下列格式 的语句: 类模板名 <类型实际参数表> 对象名; 【例】 定义类模板ABC,内含成员函数set和get。用 ABC生成对象abc1和abc2。它们的数组元素数不同, 显示的结果也不同。 # include <iostream.h> // 定义类模板ABC template <class T, int I> class ABC { private: T array [I] ; // 定义数组array
模板与使用 ublic void set(int x) ∥/定义成员函数set for(i=0;i<;计+)/循环次 arrays= /数组元素赋值 void get O ∥定义成员函数get cout<<"Ⅶn数组元素总数为:"<<I<endl; cout <<array[<<l-1<<]=<<array[l-1<endl; void maino {:模板ABC生成对象abcl
模板与使用 public: void set (int x) // 定义成员函数set { int i; for (i=0; i<I; i++) //循环I次 array[i]=x+i; //数组元素赋值 } void get () //定义成员函数get { cout <<"\n 数组元素总数为:"<< I<<endl; cout <<" array["<<I-1<<"]="<<array[I-1]<<endl; } }; void main() { //由模板ABC生成对象abc1