明天就要C++考试了,今天来复习一下运算符的重载。
主要是对一个数组类进行操作。我会分别对+、++(前置及后置)、[ ] 以及<<和>>进行重载。
其中,除了<<和>>,我使用的是成员函数对其进行重载,而<<和>>只能用友元函数。
#include <iostream>
using namespace std;
class Array{
public:
int arr[5];
Array();
Array(int,int,int,int,int);
Array operator+(Array &x);
Array operator-(Array &x);
Array &operator++(); //前置++
Array &operator++(int); //后置++
int operator[] (int);
friend istream &operator>>(istream &in, Array &x);
friend ostream &operator<<(ostream &out, Array &x);
void show();
};
Array::Array(){
}
Array::Array(int a,int b,int c,int d,int e){
arr[0]=a;arr[1]=b;arr[2]=c;arr[3]=d;arr[4]=e;
}
Array Array::operator+(Array &x){
Array temp;
for(int i=0;i<5;i++)
temp.arr[i]=this->arr[i]+x.arr[i];
return temp;
}
Array Array::operator-(Array &x){
Array temp;
for(int i=0;i<5;i++)
temp.arr[i]=this->arr[i]-x.arr[i];
return temp;
}
Array &Array::operator++(){
for(int i=0;i<5;i++)
arr[i]++;
return *this;
}
Array &Array::operator++(int){
Array *temp=new Array;
*temp=*this;
for(int i=0;i<5;i++)
arr[i]++;<br>
return (*temp);
}
void Array::show(){
for(int i=0;i<5;i++)
cout << arr[i] << " " ;
cout << endl;
}
int Array::operator[] (int i){
return arr[i];
}
istream &operator>>(istream &in, Array &x){
cout << "请输入五个数字" <<endl;
for(int i=0;i<5;i++)
in>>x.arr[i];
return in;
}
ostream &operator<<(ostream &out, Array &x){
for(int i=0;i<5;i++)
cout << x.arr[i] << " ";
cout << endl;
return out;
}
int main(){
Array A, B;
cout << "数组A:";
cin >> A;
cout << "数组B:";
cin >> B;
Array C=A+B;
cout << "*************" << endl;
cout << "+的重载..." << endl;
cout << "数组C=A+B:";
cout << C;
cout << "*************" << endl;
cout << "后置++的重载" << endl;
cout << C++;
cout << "前置++的重载" << endl;
cout << ++C;
cout << "*************" << endl;
cout << "[]的重载" << endl; cout << "C[0]=" << C[0] << " " << "C[4]=" << C[4] <<endl;
return 0;
}