//created by kong at 2019-11-07
#include<iostream>
using namespace std;
const int MAX = 10; //数组大小
class Array{
double *data; //动态数组
public:
Array();
~Array();
double &operator[](int i); //下标重载运算符
Array &operator=(Array &a); //"="重载运算符
Array &operator+(Array &a); //"+"运算符重载成员函数
Array &operator-(Array &a); //"-"运算符重载成员函数
void disp(); //输出数组
};
Array::Array(){
int i;
data = new double[MAX]; //分配动态数组空间
for (i = 0; i < MAX; i++) //数组元素布初值
data[i] = 0;
}
Array::~Array(){ //释放data分配的空间
delete[]data;
}
double &Array::operator[](int i){
return *(data + i);
}
Array&Array::operator=(Array &a){
int i;
for (i = 0; i < MAX; i++)
data[i] = a.data[i];
return *this;
}
Array&Array::operator+(Array&a){
int i;
static Array tmp;
for (i = 0; i < MAX; i++)
tmp.data[i] = data[i] + a.data[i];
return tmp;
}
Array&Array::operator-(Array&a){
int i;
for (i = 0; i < MAX; i++)
data[i] += a.data[i];
return *this;
}
void Array::disp(){
int i;
for (i = 0; i < MAX; i++)
cout << data[i] << " ";
cout << endl;
}
void main(){
Array a, b, c, d;
cout << "创建了4个数组对象a,b,c,d\n";
cout << "给数组a赋部分元素值\n";
a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4;
cout << "a:";
a.disp();
cout << "执行b=a\n";
b = a;
cout << "b:";
b.disp();
cout << "执行c=a+b\n";
c = a + b;
cout << "c:";
c.disp();
cout << "执行c=a+b后,a,b的结果\n";
cout << "a:";
a.disp();
cout << "b:";
b.disp();
cout << "执行d=a-b\n";
d = a - b;
cout << "d:";
d.disp();
cout << "执行d=a-b后a,b的结果\n";
cout << "a:";
a.disp();
cout << "b:";
b.disp();
cout << "主函数执行完毕,销毁四个对象。\n";
}