#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;
}