加载中...

11.4 另一个例子


我们来把increment函数转换为成员函数。我们再次将其中一个参数变成this。然后检查整个函数并使所有变量被隐式访问。

  1. void Time::increment (double secs) {
  2. second += secs;
  3. while (second >= 60.0) {
  4. second -= 60.0;
  5. minute += 1;
  6. }
  7. while (minute >= 60.0) {
  8. minute -= 60.0;
  9. hour += 1;
  10. }
  11. }

顺便说一句,请记住这并非是该函数的最高效实现。如果你在第九章没有这么做,那你现在应该写一个更有效率的版本。

我们可以复制第一行到结构体定义中来声明这一函数。

  1. struct Time {
  2. int hour, minute;
  3. double second;
  4. void Time::print();
  5. void Time::increment(double secs);
  6. };

为了调用(call)这函数,我们再次需要通过Time对象调用(invoke)它:

  1. Time currentTime = { 9, 14, 30.0};
  2. currentTime.increment (500.0);
  3. currentTime.print ();

程序输出9:22:50。


还没有评论.