运算符的重载

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
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值