't modified quote
{ //example: void output(integer &ur), it will running error
cout
int main()
{
integer in(12,25);
//in++;
output(in++);
output(++in);
output(in++);
return 0;
}
*******the result*******
12 25
14 27
14 27
从以上两个程序可以看出,再用重载操作符(一元)时,最好定义一个返回函数,然后再通过外部调用,否则会出错
类似的操作符还有operator--(), operator--(int).
在以上类中添加如下语句
integer& operator--() //overload operator i--
{
i--;
a--;
return *this;
}
integer operator--(int) //overload operator --i
{
int odi=i;
int od=a;
i--;
a--;
return integer(odi,od);
}
integer& operator-() //取相反数
{
i=i*(-1);
a=a*(-1);
return *this;
}
integer& operator~() //按位取非
{
i=~i;
a=~a;
return *this;
}
integer& operator!() //取反
{
i=!i;
a=!a;
return *this;
}
在以上main函数中添加如下的语句:
output(in--);
output(--in);
output(in--);
output(-in);
output(~in);
output(!in);
*********the result:*************
12 25
10 23
10 23
-9 -22
8 21
0 0
以上结果不包括自加的结果
二元运算符(+=, + 和-=)
类中添加如下语句(还是利用上面的程序)
integer& operator+=(integer &c) //overload operator i++
{
i+=c.geti();
a+=c.geta();
return *this;
}
integer &operator-=(integer &x1) //overload operator ++i
{
i-=x1.geti(); //在这里面其实是两个对象,一个是this所指的对象,一个是参数中的对象。
a-=x1.geta();
return *this;
}
integer operator+(integer c) //overload operator i++, need a parameter, don'