已有类Time和Date,要求设计一个 派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Child name用于表示小孩的名字,同时设计主程序显示一个小孩的出生时间和名字。
时间: 2023-08-31 08:28:05 浏览: 71
### 回答1:
下面是派生类 `Birthtime` 的设计和主程序的实现。
```C++
#include <iostream>
#include <string>
using namespace std;
class Date {
private:
int year, month, day;
public:
Date(int y = 2000, int m = 1, int d = 1) {
year = y;
month = m;
day = d;
}
void display() {
cout << year << "-" << month << "-" << day << endl;
}
};
class Time {
private:
int hour, minute, second;
public:
Time(int h = 0, int m = 0, int s = 0) {
hour = h;
minute = m;
second = s;
}
void display() {
cout << hour << ":" << minute << ":" << second << endl;
}
};
class Birthtime : public Date, public Time {
private:
string childName;
public:
Birthtime(string name, int y = 2000, int m = 1, int d = 1, int h = 0, int mi = 0, int s = 0) :
Date(y, m, d), Time(h, mi, s) {
childName = name;
}
void display() {
cout << "Child name: " << childName << endl;
cout << "Birth date: ";
Date::display();
cout << "Birth time: ";
Time::display();
}
};
int main() {
Birthtime b("Tom", 2022, 6, 1, 9, 30, 0);
b.display();
return 0;
}
```
程序输出:
```
Child name: Tom
Birth date: 2022-6-1
Birth time: 9:30:0
```
### 回答2:
可以设计如下派生类Birthtime:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Time {
public:
Time(int h, int m, int s) {
hour = h;
minute = m;
second = s;
}
void display() {
cout << hour << ":" << minute << ":" << second << endl;
}
protected:
int hour;
int minute;
int second;
};
class Date {
public:
Date(int y, int m, int d) {
year = y;
month = m;
day = d;
}
void display() {
cout << year << "-" << month << "-" << day << endl;
}
protected:
int year;
int month;
int day;
};
class Birthtime : public Time, public Date {
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 display() {
cout << "Child name: " << childName << endl;
cout << "Birth date: ";
Date::display();
cout << "Birth time: ";
Time::display();
}
private:
string childName;
};
int main() {
int hour, minute, second;
int year, month, day;
string childName;
cout << "Enter child's name: ";
cin >> childName;
cout << "Enter birth time (hour minute second): ";
cin >> hour >> minute >> second;
cout << "Enter birth date (year month day): ";
cin >> year >> month >> day;
Birthtime birthtime(hour, minute, second, year, month, day, childName);
birthtime.display();
return 0;
}
```
这个程序定义了3个类`Time`,`Date`和`Birthtime`。其中`Time`类表示时间,`Date`类表示日期,`Birthtime`类继承了`Time`和`Date`类,并增加了一个数据成员`childName`用于表示小孩的名字。
在主程序中,首先要求用户输入小孩的名字、出生时间和出生日期。然后创建一个`Birthtime`对象,将用户输入的值作为参数传入构造函数中。最后调用`display`函数显示小孩的出生时间和名字。
运行程序后,用户可以依次输入小孩的名字、出生时间和出生日期。程序将显示出小孩的出生时间和名字。
### 回答3:
首先,为了使用类Time和Date设计类Birthtime,我们需要在类定义中将它们两个作为基类继承。同时,我们需要为派生类Birthtime增加一个数据成员Child name用于表示小孩的名字。
类的定义可以如下所示:
```cpp
class Time {
// Time类的定义
};
class Date {
// Date类的定义
};
class Birthtime : public Time, public Date {
private:
std::string childName; // 小孩的名字
public:
// 构造函数,用于设置小孩的出生时间和名字
Birthtime(int hour, int minute, int second, int year, int month, int day, std::string name)
: Time(hour, minute, second), Date(year, month, day), childName(name) {
}
// 获取小孩的名字
std::string getChildName() const {
return childName;
}
};
```
接下来,我们可以设计主程序来显示一个小孩的出生时间和名字:
```cpp
int main() {
Birthtime birth(12, 30, 0, 2022, 1, 1, "小明");
std::cout << "小孩的名字是:" << birth.getChildName() << std::endl;
std::cout << "小孩的出生时间是:" << birth.getHour() << ":"
<< birth.getMinute() << ":" << birth.getSecond() << std::endl;
std::cout << "小孩的出生日期是:" << birth.getYear() << "-"
<< birth.getMonth() << "-" << birth.getDay() << std::endl;
return 0;
}
```
以上代码中,我们通过调用Birthtime类的构造函数设置了小孩的出生时间和名字。然后我们通过调用getChildName()、getHour()等函数来获取并显示小孩的名字、出生时间和出生日期。
请注意,上述代码只是示例,你可能需要根据具体的需求进行适当的修改。
阅读全文