您的位置:首页 > 国内新闻

C++笔记九十三:类模板

时间:2019-09-06

E编程2天前我想分享

以编程方式自动编码

欢迎各位朋友关注“依法编程”,共同交流

一,类模板的基本概念

有时有两个或更多个类的功能相同。仅当成员变量的类型不同时,才能使用类模板。

1.课堂模板的定义

类模板由模板描述和类描述组成:

模板<类型表单参数表>

类声明

例如:

模板

类TClass

{

//TClass成员函数

私有:

输入DataMember; //成员变量使用抽象类型

声明

}

1,类模板用于实现类所需成员变量的类型参数化;

2,类模板在表示数组,表,图等数据结构时尤为重要;

3.这些数据结构的表示和算法不受所涉及元素类型的影响;

2,使用类模板

使用类模板定义对象时,我们需要在<>中编写类成员变量的类型。在类名之后,这是上面类型的抽象类型。

TClass c1; //定义c1对象,成员变量的类型为int

第二,单个类模板程序案例

的#include

使用namespace std;

A类

{

公共:

A(int a=0)

{

这 - >一种=一个;

}

Void printA

{

COUT<< '一=' <

}

私有:

Int a;

};

Int main

{

A a1(11);

a1.printA;

系统( '暂停');

返回0;

}

在上面的程序中,我们定义了一个类A,然后该类包含一个成员变量a,通过调用printA函数输出变量a,上面的变量a是一个int类型。

如果我们需要输出char类型的变量a,我们需要编写另一个类:

B级

{

公共:

A(char a=0)

{

这 - >一种=一个;

}

Void printA

{

}

私有:

Char a;

};

A类和B类的基本结构是相同的。只有成员变量的类型不同,传递的参数类型也不同。我们可以使用类模板来重新组织程序。

完成程序:

//模板类类型参数化

模板

A类

{

公共:

A(T a=0)

{

这 - >一种=一个;

}

Void printA

{

}

私有:

T a;

};

Int main

{

//模板类(本身是类型化的)====具体类===“定义特定变量

//需要输入具体的

A a1(11); //模板类是抽象==“需要是特定类型

a1.printA;

A a2('a');

a2.printA;

返回0;

}

模板类是抽象的。模板类的成员函数的类型由我们抽象。只有在我们定义对象时,我们才定义抽象的类型。我们定义的类是有道理的。

第三,单个类模板定义的对象是函数参数的简单程序

//模板类类型参数化

A类

{

公共:

A(T a=0)

{

这 - >一种=一个;

}

Void printA

{

}

私有:

T a;

};

无效使用(A& a)

{

a.printA;

}

Int main

{

A a1(11); //模板类是abstract==“需要是特定于类型的

使用(A1);

返回0;

}

四,继承中的类模板派生自模板类的公共类

在上面的程序中我们声明了一个类模板A,现在我们需要声明一个从类A派生的类B,类A是一个类模板,它可以定义的内存大小是未知的,因此,派生一个类B当你需要时明确指出类模板中抽象类型的具体类型。

也就是说,当子类继承自模板类时,您需要让编译器知道父类的数据类型是什么(数据类型的性质:固定大小内存块的别名)。

也就是说,根据以下格式,当派生类A时,类A中的成员变量的未知抽象类型由<>明确指示。

B类:公共A

{

公共:

受保护的:

私有:

};

完整的计划:

//模板类类型参数化

A类

{

公共:

A(T a)

{

这 - >一种=一个;

}

受保护的:

T a;

};

//当派生子类时,您需要指定父类模板类

{

公共:

B(int a,int b): A(a)//带有参数构造函数的父类

{

这 - > B=B;

}

Void printB

{

COUT<< '一=' <

  • 友情链接:
  • 内蒙古新闻网 版权所有© www.65558868.com 技术支持:内蒙古新闻网| 网站地图