整形动态数组

题目如下:
设计整型数组ARRAY类,用来存放若干整数。它包含两个私有成员数据(int pARRAY,num),pARRAY用来表示数组的首地址,num表示数组长度。
根据给定的main函数设计必要的成员函数。main函数已给定,提交时只需要提交main函数外的代码部分。
int main()
{
ARRAY a1,a2(5);
cout<<"array 1: "<<a1<<endl;
cout<<"array 2: "<<a2<<endl;
int n,i,j,t;
while(cin>>n)
{
ARRAY a(n);
cout<<“Initial:”<<a<<endl;
for(i=0;i<n;i++)
{
cin>>t;
a[i]=t;
}
cout<<“Before sort:”<<a<<endl;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(
(a+j)>(a+j+1)) @1
{
t=
(a+j);
(a+j)=(a+j+1);
*(a+j+1)=t;
}
cout<<“After sort:”<<a<<endl;
}
}

#include
#include
using namespace std;

class ARRAY
{
private:
int *pARRAY,num;
public:
ARRAY();
ARRAY(int i);
friend ostream& operator<<(ostream &out,ARRAY &a);
int & operator[](int i);
int * operator +(int i);
~ARRAY(){delete pARRAY;}
};

ARRAY::ARRAY()
{
num=2;
pARRAY=new int2;
}

ARRAY::ARRAY(int i)
{
num=i;
pARRAY=new inti;
}

ostream& operator<<(ostream &out,ARRAY &a)
{
out<<“num=”<<a.num;
out<<" element=[";
out<<a.pARRAY[0];
for(int i=1;i<a.num;i++)
out<<","<<a.pARRAY[i];
out<<"]";
return out;
}

int & ARRAY::operator[](int i)
{
return pARRAY[i];
}

int * ARRAY::operator +(int i)
{
return (pARRAY+i);
}

题目中只用注意一个地方:
@1:
1.从(a+j),(a+j+1)可以看出来,对+的重载中,返回值仍旧应该是我们ARRAY类的pARRAY的第i个元素的地址,以达到* 的重载;
2.* ()相当于数组中的[],如a[1]与 * (a+1)是等价的,但在这里我们要注意! 我们要重载的并不是*(),因为我们的+已经返回一个地址了,现在*()的使用是正确的。
3.复习一下,“数组中每一个元素其实就相当于于一个变量,所以有时也把数组元素称为下标变量”,即:a[i]是一个变量,而非常量!我们在对[]的重载中,返回的pARRAY[i]是一个变量,而返回其引用后,我们就做到了在t=*(a+j); (a+j)=(a+j+1); *(a+j+1)=t;中直接对pARRAY[i]操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值