【C++】数组类的定义(类模板)

一、为什么要引进类模板

减少代码重用。

这个概念在C++里有很多

二、类模板与模板类

(1)类模板的含义

类模板的意思是,按不同的方式重复使用相同的代码。

一个类模板(也称为类属类或类生成类)允许用户定义为类定义的一种模式,是的类中的某些数据成员、默写成员函数的参数、某些成员函数的返回值,能够取任意类型

包括系统预定义的和用户自定义的

(2)类模板和类模板的概念

类模板:是一个类型参数化的样板,是一组类模板的集合

模板类:是某个类模板的一个实例

(3)类模板的定义格式

template <模板参数表>            //------>模板参数表的形式 class(标识符)

class (类名)

{

   (类型说明)

};

//类体实现

(4)模板类的使用格式

<类模板名> <对象名>

三、类模板的一个实例

说明:

下面这个代码实现的是有界的数组

利用类模板可以定义不同类型的数组(如int 、double)

代码块:

#include
using namespace std;
//这是一个类模板,用于描述一个有界的数组
template //尖括号里是模板参数表 
class array//定义一个array类 
{
	public:
		array(int size);//构造函数 
		~array()//析构函数 
		{
			delete [] a;//释放 
		}
		AType & operator[](int i);//运算符 
	private:
		int length;//私有成员  长度 
		AType *a;//私有成员  自定义类型的一个  指针a 
} ;
template 
array::array(int size)//size为数组的大小 
{
	register int i;
	length = size;
	a = new AType[size];
	if(!a)
	{
		cout<<"动态空间申请失败!"<
AType & array::operator[](int i)
{
	if(i<0 || i>length-1)//若输入 0 或者大于长度 ,那么越界 
	{
		cout<<"\n这个数 "< a1(10);//定义模板类整型对象a1 ,括号里为数组大小 
	array a2(5);//定义模板类双精度型对象a2  
	int i = 0;
	cout<<"整形数组  :";
	for(int i(0); i<10; i++)//int i(0)是int类里面的构造函数,意思和 i = 0相同 
	{
		a1[i] = i+1;//对数组元素进行赋值 
	}
	for( i = 0; i<10 ; i++)
	{
		cout<::operator[](int i),退出程序 
	a2[20] = 25.5;//这条语句并没有执行 
	return 0;
}

运行结果:

四、小结

类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。

 

--------->类模板的简单实用方法

你可能感兴趣的:(C++)