C中类与类定义及具体使用方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类模板

类模板也称为类属类或类生成类,是为类定义的一种模式,它使类中的一些数据成员和成员函数的参数或返回值可以取任意的数据类型。类模颁布是一个具体的类,它代表着一族类,是这一族类的统一模式。使用类模板就是要将它实例化为具体的类。

定义类模板的一般形式为:

template

class 类名

{

//……

}

其中,template是声明类模板的关键字;template后面的尖括号不能省略;数据类型参数标识符是类模板中参数化的类型名,当实例化类模板时,它将由一个具体的类型来代替。

定义类模板时,可以声明多个类型参数标识符,各标识符之间用逗号分开。

类定义中,凡要采用标准数据类型的数据成员、成员函数的参数或返回类型的前面都要加上类型标识符。

如果类中的成员函数要在类的声明之外定义,则它必须是模板函数。其定义形式为:

template

数据类型参数标识符类名<数据类型参数标识符>∷函数名(数据类型参数标识符形参1,……,数据类型参数标识符形参n)

{

函数体

}

模板类

将类模板的模板参数实例化后生成的具体的类,就是模板类。由类模板生成模板类的一般形式为:

类名<数据类型参数标识符>对象名1,对象名2,…,对象名n;

这里的数据类型参数标识符对应的是对象实际需要的数据类型。

6.4 应用举例

例6.1 函数模板的声明和模板函数的生成的例。

#include

template //声明模板函数,T为数据类型参数标识符void swap(T &x, T &y) //定义模板函数

{

T z; //变量z可取任意数据类型及模板参数类型T

z=y;

y=x;

x=z;

}

void main()

{

int m=1,n=5;

double a=8.9,b=3.4;

cout<<”m=”<

cout<<”a=”<

swap(m,n); //实例化为整型模板函数

swap(a,b); //实例化为双精度型模板函数

cout<<“m与a,n与b交换以后:”<

cout<<”m=”<

cout<<”a=”<

}

程序运行结果:

m=1 n=5

a=8.9 b=3.4

m与a,n与b交换以后:

m=5 n=1

a=3.4 b=8.9

例6.2 类模板的声明和模板类的生成的例。

#include

const int size=10;

template

class stack

{

T stck[size];

int t;

public:

stack(){t=0;}

void push(T ch);

T pop();

};

template

void stack::push(T ob)

{

if (t==size)

{

cout<<”stack is full!”<

return 0;

}

stck[t]=ob;

t++;

}

template

void stack::pop()

{

if (t==0)

{

cout<<”stack is empty!”<

return 0;

}

t--;

return stck[t];

}

main()

{

stackcs1,cs2;

int i;

cs1.push(‘a’);

cs2.push(‘x’);

cs1.push(‘b’);

cs2.push(‘y’);

cs1.push(‘c’);

cs2.push(‘z’);

for(i=0;i<3;i++)

cout<<”pop cs1:”<

for(i=0;i<3;i++)

cout<<”pop cs2:”<

stackis1,is2;

is1.push(1);

is2.push(2);

is1.push(3);

is2.push(4);

is1.push(5);

is2.push(6);

for(i=0;i<3;i++)

cout<<”pop is1:”<

for(i=0;i<3;i++)

cout<<”pop is2:”<

return 0;

}

程序运行结果:

pop cs1:c

pop cs1:b

pop cs1:c

pop cs2:z

pop cs2:y

pop cs2:x

pop is1:5

pop is1:3

pop is1:1

pop is2:6

pop is2:4

pop is2:2

相关文档
最新文档