C++操作符重载,一个类

#include "stdafx.h"
#include <iostream>
using namespace std;


class Love
{
public:
    Love():str(0),agi(0),intel(0){}
    Love(int a , int b ,int c): str(a), agi(b) , intel(c){};
    Love& operator+=(const Love& love)
    {
        str += love.str;
        agi += love.agi;
        intel += love.intel;
        return *this;
    }
    Love& operator+=(const int n)
    {
        str += n;
        agi += n;
        intel += n;
        return *this;
    }
    Love& operator++()
    {
        ++str;
        ++agi;
        ++intel;
        return *this;
    }
    Love operator++(int)
    {
        Love temp = *this;
        ++str;
        ++agi;
        ++intel;
        return temp;
    }
    Love& operator--()
    {
        --str;
        --agi;
        --intel;
        return *this;
    }
    Love operator--(int)
    {
        Love temp = *this;
        --str;
        --agi;
        --intel;
        return temp;
    }

    friend Love operator+(Love& L1, Love& L2);
    friend Love operator*(Love& L1, Love& L2);
    
    friend istream& operator>>(istream& in,Love& love);
    friend ostream& operator<<(ostream& out,Love& love);

public:
    int str;
    int agi;
    int intel;
};
istream& operator>>(iostream& in,Love& love)
{
    in>>love.str>>love.agi>>love.intel;
    if (!in)
    {
        Love(0,0,0);
    }
    return in;
}

ostream& operator<<(ostream& out,Love& love)
{
    out<<"str:="<<love.str<<" agi:="<<love.agi<<" Int:="<<love.intel;
    return out;
}

Love operator+(Love& L1, Love& L2)
{
    Love love;
    love.str = L1.str + L2.str;
    love.agi = L1.agi + L2.agi;
    love.intel = L1.intel + L2.intel;

    return love;
}

Love operator*(Love& L1, Love& L2)
{
    Love love;
    love.str = L1.str * L2.str;
    love.agi = L1.agi * L2.agi;
    love.intel = L1.intel * L2.intel;

    return love;
}


int _tmain(int argc, _TCHAR* argv[])
{
    Love boy ,girl(10,20,30);

    boy += girl;

    cout <<boy.str<<boy.agi <<boy.intel<< endl;

    cout<<girl<<endl;
    
    cout<<girl++<<endl;

    cout<<++girl<<endl;

    cout<<girl--<<endl;
    cout<<--girl<<endl;

    Love love = boy + girl;

    cout<<love<<endl;

    system("pause");
    return 0;
}

 

posted @ 2012-10-30 18:39  蓝箭一号  阅读(106)  评论(0)    收藏  举报