//#include <iostream>
//
//using namespace std;
//实现强大的数组类,比柔性数组更强大
#include <stdio.h>
class Array
{
private:
int m_length;
int* m_space;
public:
Array(int length);
Array(const Array& a1);
Array& operator= (const Array& a1);
int& operator[](int i);
bool operator== (const Array& a1);
bool operator!= (const Array& a1);
int length();
~Array();
};
Array::Array(int length) //Array a1(10);
{
m_length = length;
m_space = new int[m_length];
}
Array::Array(const Array& a1) //Array a2(a1);
{
this->m_length = a1.m_length;
this->m_space = new int[m_length];
for(int i=0;i<this->m_length;i++)
{
this->m_space[i]=a1.m_space[i];
}
}
int Array::length()
{
return this->m_length;
}
Array& Array::operator= (const Array& a1) //a1 = a2 = a3
{
delete[] this->m_space;
this->m_length = a1.m_length;
this->m_space = new int[m_length];
for(int i=0;i<m_length;i++)
{
this->m_space[i] = a1.m_space[i];
}
return *this;
}
int& Array::operator[] (int i) //a1[1] = 2;
{
return this->m_space[i];
}
bool Array::operator==(const Array& a1) //if(a1==a2)
{
int ret = true;
if(this->m_length == a1.m_length)
{
for(int i=0;i<this->m_length;i++)
{
if(this->m_space[i] == a1.m_space[i])
{
}
else
{
ret = false;
break;
}
}
}
else
{
ret = false;
}
return ret;
}
bool Array::operator!=(const Array& a1)
{
return !(*this == a1);
}
Array::~Array()
{
m_length = -1;
delete[] m_space;
}
int main()
{
Array a1(10); //数组类构造
for(int i=0;i<a1.length();i++)
{
a1[i] = i+1;
}
for(int i=0;i<a1.length();i++)
{
printf("a1[i] : Element is : %d\n",a1[i]);
}
Array a2(a1); //数组类构造
for(int i=0;i<a2.length();i++)
{
printf("a2[i] : Element is : %d\n",a2[i]);
}
if(a1==a2) //数组类判断是否相等
{
printf("a1 = a2\n");
}
Array a3(0);
Array a4(0);
if(a1 != a3) //数组类判断是否相等
{
printf("a1 != a3\n");
}
a3 = a4 = a1; //数组类复制
for(int i=0;i<a3.length();i++)
{
printf("a3[i] : Element is %d\n",a3[i]);
}
return 0;
}
数组类的实现
最新推荐文章于 2022-05-30 16:41:37 发布