Overloading postfix operator doesn't work
这是我昨天修复后的程序。如果我的时间和日期设置为 @ 零,我将无法否定前缀运算符执行任何操作。
NumDays NumDays::operator--()
{
--hour;
simplify();
return *this;
}
NumDays NumDays::operator--(int)
{
NumDays obj1(*this);
if(day == 0 && hour > 0)
{ hour--; }
simplify();
return obj1;
}
如果我尝试像后缀运算符一样使用 if 状态,即使日期和时间不为 @ 0,我的两个运算符也不会工作。 如果日和小时为 0,我如何使前缀运算符不执行任何操作?
最佳答案
首先,正如 Wimmel 所指出的,您的逻辑似乎不正确。我认为您只想在两者 day,hour
为零时禁用operator--
。
其次,前缀运算符应该返回一个引用。
第三,您可以让后缀运算符使用前缀一,这样就不会重复代码。
总而言之:
NumDays& NumDays::operator--()
{
if (day > 0 || hour > 0)
{
--hour;
simplify();
}
return *this;
}
NumDays NumDays::operator--(int)
{
NumDays copy(*this);
++(*this);
return copy;
}
关于c++ - 使前缀运算符在某些情况下什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22869352/