1. 编写程序(虚析构函数):定义一个员工类Employee,包含以下成员:两个私有成员变量,分别为char型指针变量m_name(姓名)和m_no(员工号);用于初始化成员变量的构造函数Employee(char *name,char *no);用于销毁m_name和m_no所指内存空间的析构函数~Employee();用于输出员工信息的Display()函数;以Employee类作为基类,派生出领导类Leader,新增成员:一个私有成员变量,char型指针变量m_posdes(职位描述);用于初始化成员变量的构造函数Leader(char *name, char *no, char *posdes);用于销毁m_posdes所指内存空间的析构函数~Leader();用于输出领导信息的Display()函数。
时间: 2024-03-23 09:43:08 浏览: 56
以下是代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class Employee {
protected:
char *m_name;
char *m_no;
public:
Employee(char *name, char *no) {
m_name = new char[strlen(name) + 1];
strcpy(m_name, name);
m_no = new char[strlen(no) + 1];
strcpy(m_no, no);
}
virtual ~Employee() {
delete[] m_name;
delete[] m_no;
}
virtual void Display() {
cout << "Name: " << m_name << endl;
cout << "No.: " << m_no << endl;
}
};
class Leader : public Employee {
private:
char *m_posdes;
public:
Leader(char *name, char *no, char *posdes) : Employee(name, no) {
m_posdes = new char[strlen(posdes) + 1];
strcpy(m_posdes, posdes);
}
~Leader() {
delete[] m_posdes;
}
void Display() {
Employee::Display();
cout << "Position Description: " << m_posdes << endl;
}
};
int main() {
Employee *e = new Leader("John", "001", "Manager");
e->Display();
delete e;
return 0;
}
```
在这个程序中,Employee 是一个基类,Leader 是一个派生类。Employee 类包含了两个私有成员变量 m_name 和 m_no,以及一个构造函数和析构函数,用于初始化和销毁这两个成员变量。Leader 类继承了 Employee 类,并新增了一个私有成员变量 m_posdes,以及一个构造函数和析构函数,用于初始化和销毁这个成员变量。Leader 类也重写了基类的 Display 函数,用于输出领导的信息。在主函数中,创建了一个 Leader 对象,并通过基类指针调用 Display 函数,实现了多态。
阅读全文