运算符的重载

来源:互联网 发布:2016淘宝如何打造爆款 编辑:程序博客网 时间:2024/06/10 15:22

明天就要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; }


 
原创粉丝点击