CArray类

CArray类

【问题描述】下面是一个数组类CArray的定义,其中已给出了其部分成员函数的实现代码。请补充剩余成员函数。

【样例输入】1 2 3 4 5 6 7 8 9 10

【样例输出】

b=1 2 3 4 5 6 7 8 9 10

c=1 2 3 4 5 6 7 8 9 10

d=2 4 6 8 10 12 14 16 18 20

e=0 0 0 0 0 0 0 0 0 0

#include  <iostream>
using  namespace  std;

class  CArray  {
public:
        CArray();//默认构造函数
        CArray(int*,  int);//带参构造函数
        CArray(const  CArray&);//拷贝构造函数
        ~CArray();//析构函数
        int  operator[](int)const;//对访问数组元素的下标运算符进行重载
        int&  operator[](int);//对设置数组元素的下标运算符进行重载
        friend  CArray  operator+(const  CArray&,  const  CArray&);//对加法运算符"+"进行重载
        friend  CArray  operator-(const  CArray&,  const  CArray&);//对减法运算符"+"进行重载
        friend  ostream&  operator<<(ostream&,const  CArray  &);//对输出运算符<<进行重载
private:
        int*  p_arr;
        int  size;
};


int  CArray::operator[](int  pos)const  {
        if  (pos  >=  size)
                return  p_arr[size  -  1];
        if  (pos  <  0)
                return  p_arr[0];
        return  p_arr[pos];
}
CArray::CArray()  {
        p_arr  =  NULL;
        size  =  0;
}
CArray::CArray(int*  p_a,  int  s)  {
        if  (s  >  0)  {
                size  =  s;
                p_arr  =  new  int[size];
                for  (int  i  =  0;  i  <  size;  i++)
                        p_arr[i]  =  p_a[i];
        }
        else  {
                p_arr  =  NULL;
                size  =  0;
        }
}
CArray::CArray(const  CArray&  r_other)  {
        size  =  r_other.size;
        if  (size  >  0)  {
                p_arr  =  new  int[size];
                for  (int  i  =  0;  i  <  size;  i++)
                        p_arr[i]  =  r_other.p_arr[i];
        }
}
CArray::~CArray()  {
        if  (p_arr)
                delete[]p_arr;
        p_arr  =  NULL;
        size  =  0;
}
 CArray  operator+(const  CArray&a,  const  CArray&b)
{
    int  m[a.size]={0};
    CArray  c(m, a.size);
    for(int i=0;i<a.size;i++)
        c.p_arr[i]=a.p_arr[i]+b.p_arr[i];
   return c;
}
 CArray  operator-(const  CArray&a,  const  CArray&b)
{
    int  m[a.size]={0};
    CArray  c(m,a.size);
   for(int i=0;i<10;i++)
    c.p_arr[i]=a.p_arr[i]-b.p_arr[i];
   return c;
}
 ostream&  operator<<(ostream&out,const  CArray  &c)
{
  for(int i=0;i<10;i++)
  out<<c.p_arr[i]<<" ";
  out<<endl;
  return out;
}
int& CArray:: operator[](int pos)
{
     if  (pos  >=  size)
                return  p_arr[size  -  1];
        if  (pos  <  0)
                return  p_arr[0];
        return  p_arr[pos];
}
void  input(int*  a)  {
        for  (int  i  =  0;  i  <  10;  i++)
                cin  >>  *(a  +  i);
}
int  main()  {
        int  a[10];
         input(a);
        CArray  b(a,  10);
        cout  <<  "b="  <<  b;
        CArray  c  =  b;
        cout  <<  "c="  <<  c;
        CArray  d  =  b  +  c;
        cout  <<  "d="  <<  d;
        CArray  e  =  b  -  c;
        cout  <<  "e="  <<  e;
        return  0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值