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-07 19:50:44 浏览: 51
以下是程序实现:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
class Employee {
private:
char *m_name;
char *m_no;
public:
Employee(char *name, char *no) {
int len1 = strlen(name);
int len2 = strlen(no);
m_name = new char[len1 + 1];
m_no = new char[len2 + 1];
strcpy(m_name, name);
strcpy(m_no, no);
}
virtual ~Employee() {
delete[] m_name;
delete[] m_no;
}
virtual void Display() {
cout << "员工姓名:" << m_name << endl;
cout << "员工编号:" << m_no << endl;
}
};
class Leader : public Employee {
private:
char *m_posdes;
public:
Leader(char *name, char *no, char *posdes) : Employee(name, no) {
int len = strlen(posdes);
m_posdes = new char[len + 1];
strcpy(m_posdes, posdes);
}
~Leader() {
delete[] m_posdes;
}
void Display() {
Employee::Display();
cout << "职位描述:" << m_posdes << endl;
}
};
int main() {
Employee *e = new Employee("张三", "001");
e->Display();
delete e;
cout << endl;
Leader *l = new Leader("李四", "002", "经理");
l->Display();
delete l;
cout << endl;
return 0;
}
```
程序中定义了一个基类`Employee`和一个派生类`Leader`。在`Employee`类中,定义了两个私有成员变量`m_name`和`m_no`,以及一个构造函数`Employee(char *name,char *no)`和一个析构函数`~Employee()`,并声明了一个虚函数`virtual void Display()`用于输出员工信息。
在`Leader`类中,除了继承了`Employee`类的成员之外,还新增了一个私有成员变量`m_posdes`,以及一个构造函数`Leader(char *name, char *no, char *posdes)`和一个析构函数`~Leader()`,并重写了基类的虚函数`void Display()`,在输出员工信息的基础上,还输出了职位描述信息。
在`main()`函数中,分别创建了一个`Employee`类对象和一个`Leader`类对象,并调用了它们各自的`Display()`函数,最后释放了它们的内存空间。
阅读全文