定义类CPerson,它有以下属性:姓名、身份证号、性别、年龄、和相应的成员函数(无构造函数)。再利用CPerson派生出类CEmployee,派生类CEmployee增加了两个表示部门和薪水的数据成员,根据需要为派生类增加新的成员函数。 修改基类和派生类,为他们定义构造函数,要求派生类的构造函数显式调用基类构造函数。
时间: 2024-04-10 17:33:15 浏览: 132
根据您的要求,以下是修改后的CPerson类和CEmployee类的代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
class CPerson {
protected:
string name;
string id;
string gender;
int age;
public:
CPerson(string n, string i, string g, int a) : name(n), id(i), gender(g), age(a) {}
void display() {
cout << "姓名:" << name << endl;
cout << "身份证号:" << id << endl;
cout << "性别:" << gender << endl;
cout << "年龄:" << age << endl;
}
};
class CEmployee : public CPerson {
private:
string department;
double salary;
public:
CEmployee(string n, string i, string g, int a, string d, double s) : CPerson(n, i, g, a), department(d), salary(s) {}
void display() {
CPerson::display();
cout << "部门:" << department << endl;
cout << "薪水:" << salary << endl;
}
};
int main() {
CEmployee emp("张三", "1234567890", "男", 30, "技术部", 5000);
emp.display();
return 0;
}
```
在这段代码中,CPerson类和CEmployee类都被修改,为它们定义了构造函数。
在CPerson类的构造函数中,使用初始化列表将传入的参数分别赋值给对应的成员变量。
在CEmployee类的构造函数中,使用初始化列表显式调用了基类CPerson的构造函数,同时为派生类CEmployee新增的数据成员部门和薪水也进行初始化。
在main函数中,创建了一个CEmployee对象emp,并调用其display函数输出员工的所有属性值。
阅读全文