【发布时间】:2017-02-20 09:07:10
【问题描述】:
我有一个问题,在我的代码示例中返回赋值表达式是什么意思?我有一个枚举,并且我已经覆盖了 ++:operator。因此,在我的简短示例中,可以在灯之间切换 - 但代码中有一部分我不明白。代码可以编译并正常工作。
代码:
enum Traficlight
{green, yellow, red };
Traficlight& operator++(Traficlight& t)
{
switch (t)
{
case green: return t = Traficlight::yellow; //Here <--
case yellow: return t = Traficlight::red; //Here <--
case red: return t = Traficlight::green; //Here <--
default:
break;
}
}
int main()
{
Traficlight Trafic = Traficlight::green;
Trafic++;
if (Trafic == Traficlight::yellow)
{
cout << "Light is Yellow" << endl;
}
string in;
cin >> in;
}
“return t = Traficlight::yellow”是什么意思,为什么我不能直接返回 “交通灯::黄色”。
【问题讨论】:
-
有关赋值运算符的返回值的更多信息,请参见此处:stackoverflow.com/questions/14697643/…
-
同
t = x; return x;。 -
这段代码无法编译:你定义了前置增量
operator++,但是使用了后置增量operator++。 -
@MarkRansom 不,模仿内置
operator++的效果是一种很好的编程习惯,在前缀版本中,它会修改参数并返回其值。 -
@aschepler 刚刚注意到,现在我的评论已被删除。