关于“用基类对象初始化派生类对象”的疑惑~~~
这是我们的一道面向对象的作业题:
1.定义一个时间类Time,Time类的内容包含:
(1)受保护类型成员变量Hour,表示小时,类型为int;
(2)受保护类型成员变量Min,表示分钟,类型为int;
(3)受保护成员变量Sec,表示秒,类型为int;
(4)公有成员函数SetTime,功能为用参数为Hour 、Min、 Sec赋值。声明为void SetTime{int , int, int };
(5)公有成员函数ShowTime,功能为以24小时制显示时间值。声明为void ShowTime{};
2.定义派生类NewTime,公有继承Time类。在派生类中定义两个重载成员函数如下:
(1)声明为void ShowTime(),实现功能为以24小时制显示当前的值;
(2)声明为void ShowTime(int flag),实现功能为当flag为0时,以12小时制显示当前的Hour值,当flag为其他值时,以24小时制显示当前。
3.在main函数中实现如下功能:
(1)创建Time类的对象time,以时间 “23;24;45”为time赋值;
(2)调用成员函数ShowTime显示时间;
(3)创建NewTime类的对象nt,并在Time类和NewTime类中定义适当的构造函数,实现用对象time的时间值为nt初始化;
(4)分别以24小时制和12小时输出nt的Hour值。
…………
我不知道3.(3)是什么意思。如何能用积累的对象来初始化一个派生类的对象呢?复制构造函数能实现么?能给个实例代码么?谢谢!
[解决办法]
关于问题3,可以在Time类中定义一个拷贝构造函数,Time(const Time&),然后在NewTime中NetTime中定义构造函数NewTime(const Time&),此构造函数调用Time拷贝构造函数
Time:Time(const Time &tt)
{
if(this != &tt)
{
Hour = tt.Hour ;
Min = tt.Min ;
Sec = tt.Sec ;
}
}
NewTime::NewTime(const MyTime& tt):Time(tt)
{
}