#ifndef _ARRAY_H_
#define _ARRAY_H_
class Array
{
private:
int mLength;
int * mSpace;
public:
Array(int lenght);
Array(const Array& obj);
int getlength();
void setData(int index,int value);
int getData(int index);
~Array();
int& operator[](int i);
Array& operator=(Array& a2);
bool operator==(Array &a1);
bool operator!=(Array& a1);
};
#endif
#include <iostream>
#include "01.h"
Array::Array(int length)
{
if(length<0)
{
length=0;
}
mLength=length;
mSpace=new int[mLength];
}
Array::Array(const Array& obj)
{
mLength=obj.mLength;
mSpace=new int[mLength];
for(int i=0;i<mLength;i++)
{
mSpace[i]=obj.mSpace[i];
}
}
int Array::getlength()
{
return mLength;
}
int Array::getData(int index)
{
return mSpace[index];
}
Array::~Array()
{
mLength=-1;
delete[] mSpace;
}
int& Array::operator[](int i)
{
return mSpace[i];
}
//a3=a2 //执行=操作
//如果a3 已经分配内存需要释放
//根据a2 开辟内存空间,把a2的值copy 到a3 中。
Array& Array::operator=(Array& a2)
{
if(this->mSpace!=NULL)
{
delete[]mSpace;
mLength=0;
}
this->mLength=a2.mLength;
this->mSpace=new int[this->mLength];
for(int i=0;i<this->mLength;i++)
{
mSpace[i]=a2[i];
}
return *this;
}
bool Array::operator==(Array& a1)
{
//a1 和a2 长度相等
if(this->mLength!=a1.mLength)
{
return false;
}
for(int i=0;i<this->mLength;i++)
{
if(this->mSpace[i]!=a1[i])
{
return false;
}
}
return true;
}
bool Array:: operator!=(Array& a1)
{
return !(*this==a1);
}
#include <iostream>
#include "01.h"
using namespace std;
void main()
{
Array a1(10);
for(int i=0;i<a1.getlength();i++)
{
//给数组的元素赋值 需要把数组元素本身 返回回来( )
//函数返回值当左值,需要返回一个引用
//a1.setData(i,i);
a1[i]=100+i;
}
for(int i=0;i<a1.getlength();i++)
{
printf("array %d:%d\n",i,a1[i]);
}
Array a2=a1;
for(int i=0; i<a2.getlength(); i++)
{
printf("aray %d:%d\n",i,a2.getData(i));
}
}