首页 理论教育C++程序设计:类模板定义

C++程序设计:类模板定义

【摘要】:类模板的成员函数被认为是函数模板,也称为类属函数。因此,当给出一个类模板的成员函数的定义时,必须遵循函数模板的定义。在类模板中,可以用类型参数名表示数据成员的类型,也可以表示成员函数返回值、形参和局部变量的类型。类模板定义中的类型参数可带默认值。说明以下类模板的功能。

类模板的成员函数被认为是函数模板,也称为类属函数。因此,当给出一个类模板的成员函数的定义时,必须遵循函数模板的定义。声明类模板的一般格式如下:

与函数模板相同,模板参数一般也是由关键字class或typename后面加一个标识符构成的,标识符即为类型参数名。在类模板中,可以用类型参数名表示数据成员的类型,也可以表示成员函数返回值、形参和局部变量的类型。如果类型形参多于一个,则每个形参都要使用关键词class或typename。模板参数表中可以包含非类型的普通参数,用来为类的成员提供初值。类模板中的成员函数可以是普通函数,也可以是函数模板。

例如,下面定义了一个名为Smemory的类模板,模板带类型参数T和普通参数n。

“模板参数表”也可以包含表达式参数,表达式参数经常是数值。对模板类进行实例化时给这些参数所提供的变量必须是常量表达式。类模板参数列表绝不能是空的,如果其中有一个以上的参数,则这些参数必须用逗号分开。例如:

类模板TClass的第二个参数是表达式,而第一和第三个参数是占位符。

注意:类模板的类型参数的名字不能重复,例如,以下语句是错误的:

template<class T,class T>//错误原因:类型参数名重复

在类模板定义中,若要表示类模板自身,则写作“类模板名<模板参数名表>”,此处不写关键字class和typename,模板参数名的顺序与模板参数表中的顺序一致。(www.chuimin.cn)

类模板定义中的类型参数可带默认值。

在类模板外部定义成员函数的格式如下:

template<模板参数表>

函数返回值类型类模板名<模板参数名表>∷成员函数名(形参表)

其中,模板参数表与类模板的模板参数表相同。

【例5.7】说明以下类模板的功能。

解:该类模板TClass1中用T表示一个类型参数,包含两个T类型的私有数据成员,成员函数add用于计算这两个私有数据的和,disp成员函数输出结果。