我们来把increment函数转换为成员函数。我们再次将其中一个参数变成this。然后检查整个函数并使所有变量被隐式访问。
void Time::increment (double secs) {
second += secs;
while (second >= 60.0) {
second -= 60.0;
minute += 1;
}
while (minute >= 60.0) {
minute -= 60.0;
hour += 1;
}
}
顺便说一句,请记住这并非是该函数的最高效实现。如果你在第九章没有这么做,那你现在应该写一个更有效率的版本。
我们可以复制第一行到结构体定义中来声明这一函数。
struct Time {
int hour, minute;
double second;
void Time::print();
void Time::increment(double secs);
};
为了调用(call)这函数,我们再次需要通过Time对象调用(invoke)它:
Time currentTime = { 9, 14, 30.0};
currentTime.increment (500.0);
currentTime.print ();
程序输出9:22:50。