9.6 修改函数

最后更新于:2022-04-01 06:22:15

当然,有时候你也想修改其中一个参数值。修改参数值的函数称为修改函数。 举个修改函数的例子:考虑这样一个函数increment,它给一个Time对象加上一定的秒数。此函数的草案代码如下: ~~~ void increment (Time& time, double secs) { time.second += secs; if (time.second >= 60.0) { time.second -= 60.0; time.minute += 1; } if (time.minute >= 60) { time.minute -= 60; time.hour += 1; } } ~~~ 第一行执行一条基本操作,余下代码处理特殊情况,我们以前也见过。 这个函数是正确的吗?如果参数secs的值比60大得多,会发生什么情况?那样的话,只减一次60是不够的;我们必须一直减下去,知道second的值小于60。我们可以用while语句替代if语句来实现之: ~~~ void increment (Time& time, double secs) { time.second += secs; while (time.second >= 60.0) { time.second -= 60.0; time.minute += 1; } while (time.minute >= 60) { time.minute -= 60; time.hour += 1; } } ~~~ 这种解决方案是正确的,但是不够高效。你能想到一个不需要迭代的解决方案吗?
';