C++实现一个变长数组Array类(利用构造函数实现变长)
#include<iostream>
using namespace std;
class Array{
friend ostream& operator<<(ostream& out,Array& obj);
friend istream& operator>>(istream& in,Array & obj);
private :
int *p;
int length;
public:
Array(int length);
~Array();
void setDate(int index,int data);
int getDate(int index);
Array(const Array& obj);
int getLength();
int &operator[](int index);
bool operator==(Array& obj);
bool operator!=(Array& obj);
private:
int index;
int date;
};
Array::Array(int length)
{
if (length<0) length =0 ;
this->length = length;
p = new int[this->length];
}
void Array::setDate(int index, int data)
{
p[index]= data;
}
int Array::getDate(int index)
{
return p[index];
}
Array::Array(const Array& obj)
{
this->length = obj.length;
p = new int[this->length];
for(int i =0 ;i <this->length;i++)
p[i] = obj.p[i];
}
int Array::getLength()
{
return this->length;
}
Array::~Array()
{
if(p!= NULL)
delete[] p;
this->length = 0;
}
int& Array::operator[](int index)
{
return p[index];
}
bool Array::operator==(Array& obj)
{
if(this->length !=obj.getLength())
return false;
for(int i = 0;i<this->getLength();i++)
if(this->p[i]!= obj[i])
return true;
}
bool Array::operator!=(Array& obj)
{
if(this->operator==(obj))
return false;
return true;
}
ostream& operator<<(ostream& out, Array& obj)
{
for(int i =0;i<obj.getLength();i++)
out<<obj.p[i]<<endl;
return out;
}
istream& operator>>(istream& in,Array& obj)
{
for(int i = 0;i<obj.getLength();i++)
{
in>>obj.p[i];
}
return in;
}
void Test()
{
Array arr(10);
for(int i =0 ;i<arr.getLength();i++)
arr[i]=i;
cout<<"********************1.需求:cout << arr[0];********************************************"<<endl;
cout << arr[2]<<endl ;
cout<<"********************2.需求:arr[0]= ********************************************"<<endl;
arr[0] = 10;
cout << arr[0] << endl;
cout<<"********************3.需求:b.== !=;********************************************"<<endl;
Array brr(10);
for (int i=0;i<brr.getLength();i++)
{
brr[i] = i +1;
}
if (arr == brr)
{
cout << "相等" << endl;
}
if (arr != brr)
{
cout << "不相等" << endl;
}
cout<<"********************我们可不可以直接输入或者输出Array对象********************************************"<<endl;
Array crr(4);
for (int i=0;i<crr.getLength();i++)
{
crr[i] = i + 1;
}
cout<<"********************4.需求:cout << crr;********************************************"<<endl;
cout << crr;
cout<<"********************5.需求:cin >> crr;********************************************"<<endl;
cin >> crr;
cout <<crr << endl;
}
int main()
{
Test();
return 0;
}