vec是一个自定义类型的向量,当前值为(4,0,0),而_vec是一个当前值为(1,0,0)的向量。
operator- =已经过载,因此vector [i] = vector [i] -rhs.vector [i]
for (int i = 1; i < 4; ++i) {
vec-= _vec;
}
if(vec==_vec){
return true;
}
如果我使用此代码,则函数返回true,并且vec [0]显示为1
((vec-= _vec) -= _vec) -= _vec;
if(vec==_vec){
return true;
}
然而,当我使用这段代码时,函数返回false,而vec [0]似乎是3。 这两个代码不应该做同样的事吗?我不太明白为什么后者无法工作。
答案 0 :(得分:1)
在第一个示例中,您要从_vec
四次减去vec
。
在第二个示例中,您只调用了operator::-=
三次,这是一回事。更重要的是,似乎正在创建一个临时对象,以便*this
不是您认为的那样。在this
中打印operator::-=
将有助于确认这一点。
祝你好运。