数据结构中的问题-001

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:08:01
数据结构书中一段关于数组的程序代码

#include <iostream.h>
#include <stdlib.h>
const int DefaultSize=100;
template <class Type> class Array{
public:
Array(int Size=DefaultSize);
Array(const Array<Type>&x);
~Array(){delete[] elements;}
Array<Type>&operator=(const Array<Type>&A);
Type&operator[](int i);
Type *operator *() const{return elements;}
int Length()const{return ArraySize;}
void ReSize(int sz);
private:
Type *elements;
int ArraySize;
void getArray();
}

其中"template <class Type> class Array"这一句中每个部分是什么意思?
其中"Array(const Array<Type>&x);","Array<Type>&operator=(const Array<Type>&A);"这两句分别表示复制构造函数和数组复制,这两句怎么看?怎么理解?C++中怎么表示这种"复制"意思.
其中"Type *operator *() const{return elements;}"表示指针转换,怎么理解?有什么意义?指针转换是什么意思?

我是初学都,别介意...希望能得到高手的详解....有高分...尽量用文字...我学过

1."template <class Type> class Array"语句表示定义一个模板类,其中template是定义模板类的C++关键字,Type表示一个占位符,即当类Array实例化时使用的类型符号。比如:如果需要实例化一个对整型数组进行操作的对象,可以这样定义Array<int> ob_int;
2."Array(const Array<Type>&x);"语句表示该模板类定义了自己的拷贝构造函数。拷贝构造函数实现了一种初始化该类对象的方法,即对象初始化为函数参数指定的值。通常,这种初始化是基于位等价的初始化,也就是说被初始化的类对象与函数参数将完全相同,即使是类中的成员指针变量值也是完全相同的。当然,在这里定义的拷贝构造函数,也允许设计一种新的初始化方式,并非必须与上述缺省的理解相同。
3."Array<Type>&operator=(const Array<Type>&A);"语句表示该模板类重载了赋值操作符,即当该类对象出现在赋值操作符左侧时,将被初始化为赋值操作符右侧的参数值,也就是"="后面括号内申明的参数"A"。
4."Type *operator *() const{return elements;}"语句表示该模板类重载了指针操作符,即当该类对象左侧使用"*"操作符的时候,将返回该类对象的成员指针elements。从另一个方面来理解,重载"*"操作符就是实现了模板类型与指针类型之间的转换了。