#include <iostream>
using namespace std;
class CIntArray
{
private:
int *Elements;
int Size;
static int ErrorElement;
public:
CIntArray();
CIntArray(const CIntArray& a);
~CIntArray();
int GetSize() const;
void SetSize(int NewSize);
const int operator [](int Index) const; //只可作为右值
int& operator [](int Index); //可作为左值
const CIntArray& operator =(const CIntArray& a);
};
int CIntArray::ErrorElement=0;
CIntArray::CIntArray()
{
Elements=NULL;
Size=0;
}
CIntArray::CIntArray(const CIntArray& a)
{
int CopySize;
int i;
CopySize=a.GetSize();
Elements=new int[CopySize];
for(i=0;i<CopySize;i++)
{
Elements[i]=a[i];
}
Size=CopySize;
}
CIntArray::~CIntArray()
{
if(Size>0)
{
if(Elements!=NULL)
{
delete[] Elements;
}
}
}
int CIntArray::GetSize() const
{
return Size;
}
void CIntArray::SetSize(int NewSize)
{
int *NewElements;
int CopySize;
int i;
if(NewSize<0)
{
return;
}
NewElements=NULL;
if(NewSize>0)
{
NewElements=new int[NewSize];
}
CopySize=(NewSize>Size ? Size : NewSize);
for(i=0;i<CopySize;i++)
{
NewElements[i]=Elements[i];
}
if(Size>0)
{
if(Elements!=NULL)
{
delete[] Elements;
}
}
Elements=NewElements;
Size=NewSize;
}
const int CIntArray::operator [](int Index) const //只可作为右值
{
if((Index>=0)&&(Index<=Size-1))
{
return *(Elements+Index);
}
throw "Index is out of range!";
return ErrorElement;
}
int& CIntArray::operator [](int Index) //可作为左值
{
if((Index>=0)&&(Index<=Size-1))
{
return *(Elements+Index);
}
throw "Index is out of range!";
return ErrorElement;
}
const CIntArray& CIntArray::operator =(const CIntArray& a)
{
int CopySize;
int i;
CopySize=a.GetSize();
SetSize(CopySize);
for(i=0;i<CopySize;i++)
{
Elements[i]=a[i];
}
return *this;
}
int main()
{
try
{
CIntArray a1;
a1.SetSize(6);
a1[0]=1;
a1[1]=2;
a1[2]=3;
a1[3]=4;
a1[4]=5;
a1[5]=6;
a1.SetSize(9);
a1[6]=7;
a1[7]=8;
a1[8]=9;
//a1[9]=10;
//a1[10]=11;
for(int i=0;i<a1.GetSize();i++)
{
cout<<a1[i]<<" ";
}
//cout<<a1[9]<<" ";
//cout<<a1[10]<<" ";
cout<<endl;
cout<<"----------"<<endl;
CIntArray a2(a1);
for(int j=0;j<a2.GetSize();j++)
{
cout<<a2[j]<<" ";
}
//cout<<a2[9]<<" ";
//cout<<a2[10]<<" ";
cout<<endl;
cout<<"----------"<<endl;
CIntArray a3;
a3=a1;
for(int k=0;k<a3.GetSize();k++)
{
cout<<a3[k]<<" ";
}
//cout<<a3[9]<<" ";
//cout<<a3[10]<<" ";
cout<<endl;
}
catch(char *ErrorMessage)
{
cout<<ErrorMessage<<endl;
}
cout<<"----------"<<endl;
return 0;
}
IntArraySample1.rar_自定义数组
版权申诉
145 浏览量
2022-09-20
12:08:35
上传
评论
收藏 826KB RAR 举报
小波思基
- 粉丝: 72
- 资源: 1万+
最新资源
- 基于Matlab人脸肤色定理的教师人数统计+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab霍夫曼变换的表盘读数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab火灾烟雾检测源码带GUI界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的恶劣天气交通标志识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的霍夫曼变换的表盘示数识别+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的车道线识别系统 +源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB的教室人数统计系统带Gui界面+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB 的霍夫曼变换答题卡识别源码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab+bp神经网络的神经网络汉字识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0