用c++设计一个用于人事管理的 People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等。其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人员信息的录入和显示。 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数。
时间: 2023-12-16 07:06:21 浏览: 86
以下是一个简单的实现:
```c++
#include <iostream>
#include <string>
class Date {
public:
Date(int year = 0, int month = 0, int day = 0) : year_(year), month_(month), day_(day) {}
int year() const { return year_; }
int month() const { return month_; }
int day() const { return day_; }
void set_year(int year) { year_ = year; }
void set_month(int month) { month_ = month; }
void set_day(int day) { day_ = day; }
private:
int year_;
int month_;
int day_;
};
class People {
public:
People(int number = 0, char sex = ' ', const Date& birthday = Date(), const std::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_) {}
inline int number() const { return number_; }
inline char sex() const { return sex_; }
inline Date birthday() const { return birthday_; }
inline std::string id() const { return id_; }
void set_number(int number) { number_ = number; }
void set_sex(char sex) { sex_ = sex; }
void set_birthday(const Date& birthday) { birthday_ = birthday; }
void set_id(const std::string& id) { id_ = id; }
void display() const {
std::cout << "Number: " << number_ << std::endl;
std::cout << "Sex: " << sex_ << std::endl;
std::cout << "Birthday: " << birthday_.year() << "-" << birthday_.month() << "-" << birthday_.day() << std::endl;
std::cout << "ID: " << id_ << std::endl;
}
private:
int number_;
char sex_;
Date birthday_;
std::string id_;
};
int main() {
People p1(1, 'M', Date(1994, 1, 1), "123456789012345678");
p1.display();
return 0;
}
```
在这个实现中,我们定义了一个 `Date` 类来表示日期,并将其作为 `People` 类的一个属性。`People` 类有构造函数、析构函数、拷贝构造函数和一些成员函数来对人员信息进行操作。我们还使用了内联函数和缺省形参值的特性。
在 `main` 函数中,我们创建了一个 `People` 对象 `p1`,并调用了它的 `display` 函数来显示人员信息。
阅读全文