回 帖 发 新 帖 刷新版面

主题:关于运算符重载——为什么输出这个结果

#include<iostream.h>
class Vector
{
    int x,y;
public:
    Vector(int i,int j){x=i;y=j;}
    disp(){cout<<"("<<x<<","<<y<<")"<<endl;}
    void operator+=(Vector m){x=x+m.x;y=y+m.y;}
    void operator-=(Vector n){x=x-n.x;y=y-n.y;}
};
void main()
{
    Vector a(1,2),b(4,2);
    cout<<"a:";
    a.disp();
    cout<<"b:";
    b.disp();
    cout<<"a+=b:";
    a+=b;
    a.disp();
    cout<<"a-=b:";
    a-=b;
    a.disp();
}
输出结果是:
a:(1,2)
b:(4,2)
a+=b:(5,4)
a-=b:(1,2)
前三个结果我懂,最后一个不是应该为(-3,0)吗?这是为什么啊?

回复列表 (共3个回复)

沙发

(5,4) - (1,2) 难道不是 (4,2)

板凳

a+=b时已经改变了a的值啊。

3 楼

哈哈,原来如此,谢谢了

我来回复

您尚未登录,请登录后再回复。点此登录或注册