设计一个用于人事管理的"人员"类.由于考虑到通用性,这里只抽象出所有类型人员都具有的属性:编号,姓名,性别,出生日期,身份证号等.其中"出生日期"定义为一个""riqi"类内嵌子对象.用成员函数实现对人员信息的初始化和显示.要求包括:构造函数和析构函数,复制构造函数,内联成员函数,带默认形参值的成员函数,类的组合
时间: 2023-06-17 22:03:38 浏览: 116
以下是一个可能的实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义日期类
class Riqi {
public:
Riqi(int y = 1970, int m = 1, int d = 1) : year(y), month(m), day(d) {}
void setRiqi(int y, int m, int d) { year = y; month = m; day = d; }
void display() { cout << year << "-" << month << "-" << day; }
private:
int year, month, day;
};
// 定义人员类
class Renyuan {
public:
Renyuan(int id = 0, const string& name = "", char sex = 'm', const Riqi& birthday = Riqi(), const string& idNo = "") :
id_(id), name_(name), sex_(sex), birthday_(birthday), idNo_(idNo) {}
Renyuan(const Renyuan& other) : id_(other.id_), name_(other.name_), sex_(other.sex_),
birthday_(other.birthday_), idNo_(other.idNo_) {}
~Renyuan() {}
int getId() const { return id_; }
void setId(int id) { id_ = id; }
const string& getName() const { return name_; }
void setName(const string& name) { name_ = name; }
char getSex() const { return sex_; }
void setSex(char sex) { sex_ = sex; }
const Riqi& getBirthday() const { return birthday_; }
void setBirthday(const Riqi& birthday) { birthday_ = birthday; }
const string& getIdNo() const { return idNo_; }
void setIdNo(const string& idNo) { idNo_ = idNo; }
void display() const {
cout << "编号:" << id_ << endl;
cout << "姓名:" << name_ << endl;
cout << "性别:" << sex_ << endl;
cout << "出生日期:";
birthday_.display();
cout << endl;
cout << "身份证号:" << idNo_ << endl;
}
private:
int id_;
string name_;
char sex_;
Riqi birthday_;
string idNo_;
};
int main() {
Renyuan ry1(1001, "张三", 'm', Riqi(1980, 1, 1), "110101198001011234");
ry1.display();
return 0;
}
```
这个实现中,日期类 `Riqi` 是人员类 `Renyuan` 内嵌的一个对象。人员类有默认构造函数、复制构造函数、析构函数,以及用于获取和设置各个属性的成员函数。其中 `display()` 函数用于将人员信息输出到标准输出流。在 `main()` 函数中,创建了一个人员对象并调用了它的 `display()` 函数。
阅读全文