gpt4 book ai didi

c++ - 循环与操作顺序

转载 作者:行者123 更新时间:2023-11-28 05:25:44 24 4
gpt4 key购买 nike

vec 是一个自定义类的 vector ,当前值为 (4,0,0),_vec 是一个 vector ,当前值为 (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。这两个代码不应该做同样的事情吗?我不太明白为什么后者不起作用。

最佳答案

在第一个示例中,您从 vec 中减去 _vec 四次。

在第二个示例中,您只调用了 operator::-= 三次,所以这是一回事。更重要的是,似乎正在创建一个临时对象,因此 *this 不是您认为的那样。在 operator::-= 中打印出 this 将有助于确认这一点。

祝你好运。

关于c++ - 循环与操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com