我有疑问,在我的代码示例中返回赋值表达式意味着什么?我有一个枚举,我已经覆盖了++:运算符。因此,在我的简短示例中可以在ligth之间切换 - 但是代码中有一部分我不明白。代码编译并正常工作。
代码:
otherwise
"返回t = Traficlight :: yellow"意思是,为什么我不能回来 " Traficlight ::黄色"
答案 0 :(得分:6)
在返回指令中,运算符分配给t
哪个是引用(修改它)然后返回值。
这就是增量运算符的作用:修改&同时返回引用,以便递增的值可以在另一个操作中使用。
答案 1 :(得分:4)
t = Traficlight::yellow
将Traficlight::yellow
写入t
。该表达式的结果也是Traficlight::yellow
,所以这个:
return t = Traficlight::yellow;
等于:
t = Traficlight::yellow;
return t;
在上面的函数中,我们收到了对t
的引用作为参数,因此更改t
的值实际上是相关的。
答案 2 :(得分:3)
您的函数通过引用接收参数:
pip install git+https://github.com/pytest-dev/pytest.git
它是一个++运算符,所以在语义上它必须递增它的操作数,然后返回对该操作数的引用。所以你必须做两件事:
Traficlight& operator++(Traficlight& t)
这可以写成一行,因为赋值运算符返回指定的值。
答案 3 :(得分:0)
它为t
变量赋值(并且在您的代码中t
是引用类型,因此更改在外部可见),然后返回t
变量的值。