重载是为处理自定义类型的操作
#include <iostream.h>
class Overload
{
private:
int a;
int b;
friend ostream& operator<<(ostream &out, Overload &one);
public:
Overload(int a = 0, int b = 0)
{
this->a = a;
this->b = b;
}
void show()
{
cout<<a<<" + " <<b<<"z"<<endl;
}
public:
//对象相减
Overload operator-(Overload &two)
{
Overload tmp;
tmp.a = this->a - two.a;
tmp.b = this->b - two.b;
return tmp;
}
//对象整形
Overload operator-(int x)
{
Overload tmp;
tmp.a = this->a - x;
tmp.b = b;
return tmp;
}
Overload operator+(Overload &two)
{
Overload tmp;
tmp.a = this->a + two.a;
tmp.b = this->b + two.b;
return tmp;
}
Overload operator+(int x)
{
Overload tmp;
tmp.a = this->a + x;
tmp.b = b;
return tmp;
}
// 前置--
Overload& operator--()
{
this->a--;
this->b--;
return *this;
}
// 前置++
Overload& operator++()
{
this->a++;
this->b++;
return *this;
}
//后置--
Overload operator--(int)
{
Overload tmp = *this;
this->a --;
this->b --;
return tmp;
}
//后置++
Overload operator++(int)
{
Overload tmp = *this;
this->a ++;
this->b ++;
return tmp;
}
};
ostream& operator<<(ostream &out, Overload &one)
{
out<<"<<重载"<<endl;
out<<one.a<<" + "<<one.b<<"z"<<endl;
return out;
}
void main()
{
Overload c1(1, 2), c2(4, 6);
cout<<"对象减对象的两种表示"<<endl;
Overload c3 = c1.operator-(c2);
c3.show();
Overload c4 = c1 - c2 ;
c4.show();
cout<<"对象减整形的表示"<<endl;
Overload c5 = c2 - 1 ;
c5.show();
cout<<"对象加法同理略过"<<endl;
cout<<endl;
cout<<"前置--用法"<<endl;
cout<<"x=--y,后x的值"<<endl;
Overload c6 = --c2;
c6.show();
cout<<"x=--y,后y的值"<<endl;
c2.show();
c2++;
cout<<"后置--用法"<<endl;
cout<<"x=y--,后x的值"<<endl;
Overload c7 = c2--;
c7.show();
cout<<"x=y--,后y的值"<<endl;
c2.show();
cout<<c2;
}