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;
}