11.4 另一个例子

优质
小牛编辑
137浏览
2023-12-01

我们来把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。