您的位置:首页 > 其它

算术运算符重载后的总结

2015-02-15 22:03 363 查看
重载是为处理自定义类型的操作
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  -- ++ 重载