这程序我改了,但不知道是不是作者的原意,大家给点意见。
辨析下面程序存在的错误(参照语句行号),并加以改正.
01 # include <iostream>
02 using namespace std;
03 class Date;
04 class Time
05 {
06 public:
07 Time(int,int,int);
08 void display(const Date&);
09 private:
10 int hour,minute,sec;
11 };
12 class Date
13 {
14 public:
15 Date(int,int,int);
16 friend void Time::display(const Date &);
17 private:
18 int month,day,year;
19 };
20 Time::Time(int h,int m,int s)
21 {
22 hour=h; minute=m; sec=s;
23 }
24 void Time::display(const Date &da)
25 {
26 cout < <da.month < < "/ " < <da.day < < "/ " < <da.year < <endl;
27 da.month=4; da.day=27; da.year=2005;
28 cout < <hour < < ": " < <minute < < ": " < <sec < <endl;
29 return;
30 }
31 Date::Date(int m,int d,int y)
32 {
33 month=m; day=d; year=y;
34 }
35 int main()
36 {
37 const Time t(9,30,0);
38 Date d(4,27,2005);
39 t.display(d);
40 return 0;
41 }
答:
27行:常引用做形参,在函数中不能更新所引用的对象. 用//注释掉
37行:去掉const
===========
但我不知道27行的直接注释掉符不符合作者的意愿。
33行为什么有const就会出错?
[解决办法]
啥子?
[解决办法]
maRK一个,楼下的注解
[解决办法]
39行 t.display(d);
24行 void Time::display(const Date &da) // 参数是const引用,da也就是个常量
27行 da.month=4; da.day=27; da.year=2005;
怎么能修改常量的值呢? da.month也不行