你有时能看到用另一种不同的接口(不同参数和返回值)实现addTime这样的函数。addTime函数不是在每次调用时都创建一个新对象,而是要求调用者提供一个“空对象”用以存储其结果。请将下述代码和之前版本做比较:
void addTimeFill (const Time& t1, const Time& t2, Time& sum) {
sum.hour = t1.hour + t2.hour;
sum.minute = t1.minute + t2.minute;
sum.second = t1.second + t2.second;
if (sum.second >= 60.0) {
sum.second -= 60.0;
sum.minute += 1;
}
if (sum.minute >= 60) {
sum.minute -= 60;
sum.hour += 1;
}
}
此方法的一个优点是调用者可以选择重用同一个对象来重复执行一组加法操作。这样做可以带来一点效率的提升,但也够含糊,会引发小错误。绝大多数编程的情况,用一点运行时间换取大量调试时间还是值得的。
注意:前两个参数可以声明为const,第三个不行。