设计一个用于人事管理的人员类。只抽象出编号、性别、出生日期、身份证号。其中出生日期声明为一个日期类内嵌子对象,用成员函数实现对人员的录入和显示。要求包括构造函数、析构函数、复制构造函数、内联成员函数、类的组合、带默认形参值的成员函数
时间: 2023-10-20 13:06:44 浏览: 74
以下是一个符合要求的人员类的示例代码:
```cpp
#include <iostream>
#include <string>
#include <ctime>
// 声明日期类
class Date {
public:
Date(int y = 1970, int m = 1, int d = 1) : year(y), month(m), day(d) {}
void setDate(int y, int m, int d) { year = y; month = m; day = d; }
void printDate() const {
std::cout << year << "-" << month << "-" << day << std::endl;
}
private:
int year;
int month;
int day;
};
// 声明人员类
class Person {
public:
Person(int id = 0, char gender = 'M', const Date& birth = Date(), const std::string& idCard = "") :
idNumber(id), sex(gender), birthDate(birth), idCardNumber(idCard) {}
Person(const Person& other) :
idNumber(other.idNumber), sex(other.sex), birthDate(other.birthDate), idCardNumber(other.idCardNumber) {}
~Person() {}
int getIdNumber() const { return idNumber; }
char getSex() const { return sex; }
Date getBirthDate() const { return birthDate; }
std::string getIdCardNumber() const { return idCardNumber; }
void setIdNumber(int id) { idNumber = id; }
void setSex(char gender) { sex = gender; }
void setBirthDate(const Date& birth) { birthDate = birth; }
void setIdCardNumber(const std::string& idCard) { idCardNumber = idCard; }
void printInfo() const {
std::cout << "ID: " << idNumber << std::endl;
std::cout << "Gender: " << sex << std::endl;
std::cout << "Birth date: ";
birthDate.printDate();
std::cout << "ID card number: " << idCardNumber << std::endl;
}
private:
int idNumber;
char sex;
Date birthDate;
std::string idCardNumber;
};
int main() {
// 创建一个人员对象并打印信息
Person person1(1, 'M', Date(1990, 1, 1), "1234567890");
person1.printInfo();
// 复制构造函数测试
Person person2 = person1;
person2.printInfo();
return 0;
}
```
在这个示例中,我们使用了一个内嵌的日期类来表示出生日期。人员类包括了编号、性别、出生日期和身份证号等信息,并实现了构造函数、析构函数、复制构造函数、内联成员函数、类的组合和带默认形参值的成员函数。在主函数中,我们创建了一个人员对象并打印了其信息,然后使用复制构造函数创建了一个新的人员对象并打印了其信息。
阅读全文