使用VC6打开考生文件夹下的工程test33_3。此工程包含一个test33_3.cpp,其中定义了表示时间的类Time,但Time类定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类Time的私有数据成员hours、minutes

admin2010-02-08  52

问题 使用VC6打开考生文件夹下的工程test33_3。此工程包含一个test33_3.cpp,其中定义了表示时间的类Time,但Time类定义并不完整。请按要求完成下列操作,将程序补充完整。
    (1)定义类Time的私有数据成员hours、minutes和seconds,它们都是int型的数据,分别表示时间的小时、分和秒。请在注释“//**1**”之后添加适当的语句。
   (2)完成类Time缺省构造函数的定义,该函数将数据成员hours、minutes和seconds的值初始化为0,请在注释“//** 2**”之后添加适当的语句。
   (3)完成类Time带参构造函数的定义,该函数将数据成员hours、minutes和seconds的值分别初始化为参数h、m和s的值,请在注释“//**3**”之后添加适当的语句。
   (4)完成类Time中运算符“+”的重载,注意小时、分和秒在相加时的进位问题。请在注释“//**4**”之后添加适当的语句。
   注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
   程序输出结果如下:
   8:17:11
   源程序文件test33_3.cpp清单如下:
       #include <iostream.h>
       class Time
       {
         //** 1 **
       public:
        Time ( )
       {
           //** 2 **
       seconds=0;
       }
       Time(int h, int m, int s)
        {
            //** 3 **
            minutes=m;
            seconds=s;
        }
        Time operator +(Time&);
        void gettime();
      };
      Time Time::operator +(Time& time)
      {
            //** 4 **
        s=time.seconds+seconds;
        m=time.minutes+minutes+s/60;
        h=time.hours+hours+m/60;
        Time result(h,m%60,s%60);
        return result;
      }
      void Time::gettime()
      {
        cout<<hours<<":"<<minutes<<":"<<seconds<<end1;
        }
        void main(  )
        {
        Time t1(3,20,15),t2(4,56,56),t3;
        t3=t1+t2;
        t3.gettime();
      }

选项

答案(1) int hours,minutes,seconds; (2) hours=0; minutes=0; (3) hours=h; (4) int h,m,s;

解析 本题主要考查考生对于类的构造函数和运算符重载的掌握。构造函数可以有一个或多个参数,所以构造函数是可以重载的。而在类Time运算符“+”重载时,特别要注意重载函数要返回的是Time型的值,而分和秒是逢60进1的,不是逢 100进1或者单独相加各自的部分。
转载请注明原文地址:https://kaotiyun.com/show/SKID777K
0

最新回复(0)