构造日期类,包括年、月、日等私有属性,构造函数和操作这些私有属性的公有函数以及将该对象转换成字符串的转换函数(就是能强制类型转换成string类,比如:有一个日期对象d=date(2019,3,26), 则string(d)就会返回一个字符串“2019年3月26日”);构造人员类,包括姓名,出生日期(复合了日期类的对象)等私有属性,构造函数和操作这些属性的公有函数;构造学生类,该类从人员类派生而来,包括学号和专业私有属性,构造函数和操作私有属性的公有函数。
时间: 2024-02-24 22:58:53 浏览: 140
下面是对应的代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Date {
private:
int year, month, day;
public:
Date(int y, int m, int d) : year(y), month(m), day(d) {}
int getYear() { return year; }
int getMonth() { return month; }
int getDay() { return day; }
string toString() { return to_string(year) + "年" + to_string(month) + "月" + to_string(day) + "日"; }
};
class Person {
private:
string name;
Date birthday;
public:
Person(string n, Date b) : name(n), birthday(b) {}
string getName() { return name; }
Date getBirthday() { return birthday; }
string getBirthdayString() { return birthday.toString(); }
};
class Student : public Person {
private:
string id, major;
public:
Student(string n, Date b, string i, string m) : Person(n, b), id(i), major(m) {}
string getId() { return id; }
string getMajor() { return major; }
};
int main() {
Date d(2019, 3, 26);
cout << d.toString() << endl;
Person p("张三", d);
cout << p.getName() << "的生日是" << p.getBirthdayString() << endl;
Student s("李四", d, "20190101", "计算机科学");
cout << s.getName() << "的学号是" << s.getId() << ",专业是" << s.getMajor() << endl;
return 0;
}
```
运行结果为:
```
2019年3月26日
张三的生日是2019年3月26日
李四的学号是20190101,专业是计算机科学
```
说明:这里基本实现了题目要求的类的构造和函数操作。Date类表示日期,Person类表示人员,Student类从Person类派生而来,表示学生。其中,Person类中使用了Date类的对象,Student类中再添加了学号和专业。运行结果中可以看到,分别输出了日期、人员和学生的信息。
阅读全文