C++数组类设计

来源:百度知道 编辑:UC知道 时间:2024/06/06 06:41:00
// Note:Your choice is C++ IDE
#include <iostream.h>
#include <stdlib.h>

class Array
{
private:
int size;
int low;
int up;
double *arr;
public:
Array(int sz=100);
Array(int i,int u);
Array(const Array &a);
~Array(void);
void operator=(const Array &a);
double&operator[](int ndx)const;
void Resize(int sz);
void Resize(int ii,int hh);
int ArraySize(void)const;
};
Array::Array(int sz)
{
if(sz<=0)
exit(0);
low=0;
up=sz-1;
size=sz;
arr=new double[size];
}
Array::Array(int i,int u)
{
low=i;
up=u;
size=up-low+1;
arr=new double[size];
}
Array::Array(const Array &a)
{
int n=a.size;
size=n;
arr=new double[size];
double *soucePtr=a.arr;
double *destPtr=arr;
while(n!=0)
*destPtr++=*soucePtr++;

Array::Array(const Array &a)
{
int n=a.size;
size=n;
arr=new double[size];
double *soucePtr=a.arr;
double *destPtr=arr;
while(n!=0)
*destPtr++=*soucePtr++;
}
这个是拷贝构造函数
在C++中,下面三种对象需要调用拷贝构造函数:
1) 一个对象以值传递的方式传入函数体;
2) 一个对象以值传递的方式从函数返回;
3) 一个对象需要通过另外一个对象进行初始化;

void Array::operator=(const Array &a)
这是运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下,如果没有指定默认的赋值运算符重载函数,那么系统将会自动提供一个赋值运算符重载函数。
double&Array::operator[](int ndx)const也是一样,这个(int ndx)表示参数列表,和普通函数参数一样

是重载运算符的意思
有了他就允许你这样用了
Array a;
a[1];