2.定义一个雇员类 Employee ,包含 char 型数组成员变量 m _ cName (姓名)和 m _ cNo (编号), int 型成员变量 m _ nDepartment (部门号),成员函数 SetName ( char * pcName )、 SetNo ( char * pcNo )和 SetDept ( int nDept )分别用来设置姓名、编号和部门号, Display ()函数用来输出雇员的信息,还包含一个构造函数 Employee ( char * pcName , char * pcNo , int nDept )。定义一个经理类 Manager ,派生于雇员类 Employee ,新增成员变量 m _ nLeve I 表示级别和成员函数 SetLvl ( int nLvl )用来设置 m _ nLevel ,重定义 Display ()用来输出经理的信息。 要求: (1) Manager 类的成员函数可以直接访问 Employee 类中的成员变量,但类的外部不能直接访问。 (2)在主函数中分别创建一个雇员类对象和一个经理类对象,并输出对象的信息。
时间: 2024-03-22 08:42:16 浏览: 15
好的,下面是我为您编写的 Employee 和 Manager 类的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class Employee {
protected:
char m_cName[20];
char m_cNo[10];
int m_nDepartment;
public:
Employee(char* pcName, char* pcNo, int nDept) {
strcpy(m_cName, pcName);
strcpy(m_cNo, pcNo);
m_nDepartment = nDept;
}
void SetName(char* pcName) {
strcpy(m_cName, pcName);
}
void SetNo(char* pcNo) {
strcpy(m_cNo, pcNo);
}
void SetDept(int nDept) {
m_nDepartment = nDept;
}
void Display() {
cout << "姓名:" << m_cName << endl;
cout << "编号:" << m_cNo << endl;
cout << "部门号:" << m_nDepartment << endl;
}
};
class Manager : public Employee {
private:
int m_nLevel;
public:
Manager(char* pcName, char* pcNo, int nDept, int nLevel)
: Employee(pcName, pcNo, nDept), m_nLevel(nLevel) {}
void SetLvl(int nLvl) {
m_nLevel = nLvl;
}
void Display() {
Employee::Display();
cout << "级别:" << m_nLevel << endl;
}
};
int main() {
Employee emp("张三", "001", 1);
Manager mgr("李四", "002", 2, 3);
cout << "雇员信息:" << endl;
emp.Display();
cout << "经理信息:" << endl;
mgr.Display();
return 0;
}
```
在这个程序中,Employee 类包含了姓名、编号和部门号三个成员变量,以及对应的设置函数和输出函数。Manager 类继承自 Employee 类,新增加了一个成员变量 m_nLevel 表示级别,并重定义了 Display() 函数,输出经理的信息。
在主函数中,我们分别创建一个 Employee 对象和一个 Manager 对象,并分别调用其 Display() 函数输出信息。由于 Manager 类是 Employee 类的子类,因此可以直接访问 Employee 类中的成员变量。