已有类Time和Date,要求设计一个 派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Child name用于表示小孩的名字,同时设计主程序显示一个小孩的出生时间和名字。
时间: 2023-06-26 19:08:41 浏览: 139
下面是一个可能的实现:
```c++
#include <iostream>
#include <string>
using namespace std;
class Time {
protected:
int hour;
int minute;
int second;
public:
Time(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
void print() {
cout << hour << ":" << minute << ":" << second;
}
};
class Date {
protected:
int year;
int month;
int day;
public:
Date(int y, int m, int d) {
year = y;
month = m;
day = d;
}
void print() {
cout << year << "-" << month << "-" << day;
}
};
class Birthtime : public Time, public Date {
private:
string childName;
public:
Birthtime(int h, int m, int s, int y, int mon, int d, string name) : Time(h, m, s), Date(y, mon, d) {
childName = name;
}
void print() {
cout << "Child name: " << childName << endl;
cout << "Birth time: ";
Date::print();
cout << " ";
Time::print();
cout << endl;
}
};
int main() {
Birthtime b(9, 0, 0, 2022, 10, 1, "Tom");
b.print();
return 0;
}
```
在这个实现中,类Time和Date分别表示时间和日期,它们都有一个print()成员函数用于打印出时间或日期。类Birthtime继承了类Time和Date,同时增加了一个string类型的数据成员childName,用于表示小孩的名字。构造函数中,我们使用类Time和Date的构造函数初始化时间和日期成员,同时使用参数name来初始化childName成员。
在主程序中,我们创建了一个Birthtime对象b,并将它的构造函数参数设为9点0分0秒、2022年10月1日和Tom。我们调用b的print()函数,它会输出以下内容:
```
Child name: Tom
Birth time: 2022-10-1 9:0:0
```
注意在print()函数中,我们使用了作用域解析运算符(::)来调用Time和Date的print()成员函数,以区分类成员函数和全局函数。
阅读全文