有人可以解释为什么main()
中的以下循环不会终止
#include <iostream>
enum day {
Sunday, // 0
Monday, // 1
Tuesday, // 2
Wednesday, // 3
Thursday, // 4
Friday, // 5
Saturday, // 6
not_a_day // 7
};
day operator++(day d) {
d = (day)(d + 1);
return d;
}
int main() {
day d;
d = Sunday;
while (d <= Saturday) {
++d;
}
std::cout << d << std::endl;
return 0;
}
当我将重载运算符更改为使用引用时,它按预期工作,返回7
。
day &operator++(day &d) {
d = (day)(d + 1);
return d;
}
取自here。
的示例我也不明白为什么编译器能够使用day
运算符将int
强制转换为+
,但是无法这样做对于++
?