用c++设计一个用于人事管理的 People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人员信息的录入和显示。 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数。并标注每一步作用
时间: 2023-12-17 15:02:41 浏览: 66
以下是用 C++ 设计的 People(人员)类:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 日期类
class Date {
public:
Date(int year = 0, int month = 0, int day = 0) : year(year), month(month), day(day) {}
int getYear() const { return year; }
int getMonth() const { return month; }
int getDay() const { return day; }
private:
int year;
int month;
int day;
};
// 人员类
class People {
public:
People(int number = 0, string sex = "", Date birthday = Date(), string id = "") : number(number), sex(sex), birthday(birthday), id(id) {}
// 析构函数
~People() {}
// 拷贝构造函数
People(const People& other) {
number = other.number;
sex = other.sex;
birthday = other.birthday;
id = other.id;
}
// 录入人员信息
void input(int number, string sex, Date birthday, string id);
// 显示人员信息
void display() const;
private:
int number; // 编号
string sex; // 性别
Date birthday; // 出生日期
string id; // 身份证号
};
// 内联成员函数 - 录入人员信息
inline void People::input(int number, string sex, Date birthday, string id) {
this->number = number;
this->sex = sex;
this->birthday = birthday;
this->id = id;
}
// 带缺省形参值的成员函数 - 显示人员信息
void People::display() const {
cout << "number: " << number << endl;
cout << "sex: " << sex << endl;
cout << "birthday: " << birthday.getYear() << "-" << birthday.getMonth() << "-" << birthday.getDay() << endl;
cout << "id: " << id << endl;
}
int main() {
// 创建人员对象并录入信息
People p;
p.input(1001, "male", Date(2000, 1, 1), "310101200001010001");
// 显示人员信息
p.display();
return 0;
}
```
说明:
1. 定义了一个日期类 `Date`,它有年月日三个成员变量和一个构造函数,以及三个取值函数。
2. 定义了一个人员类 `People`,它有编号、性别、出生日期、身份证号四个成员变量和一个构造函数、一个析构函数、一个拷贝构造函数,以及两个成员函数。
3. 录入人员信息的成员函数 `input` 中使用了 `this` 指针,用于区分成员变量和参数变量。
4. 显示人员信息的成员函数 `display` 中使用了缺省形参值,用于提高代码的可读性。
5. 在 `main` 函数中创建了一个人员对象 `p`,并调用成员函数 `input` 和 `display` 分别录入和显示人员信息。
阅读全文