、建立如下的类继承结构: (1)定义一个People类,其成员变量有:姓名(name)、性别(sex)、年龄(age)。 (2)从People类派生出工人类Worker,其成员变量有:工号id和工资 salary。 要求: (1)分别定义以上类的构造函数和析构函数。 (2)分别定义以上类的输出函数void Show( )。 (3)在主函数中动态创建一个基类对象p,并输出基类对象的信息。 (4)在主函数中定义派生类对象w,并输出派生类对象的信息。
时间: 2024-01-19 12:05:05 浏览: 86
好的,我来为您解答。
以下是代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class People {
public:
People(string n, string s, int a) : name(n), sex(s), age(a) {
cout << "People constructor." << endl;
}
virtual ~People() {
cout << "People destructor." << endl;
}
virtual void Show() {
cout << "Name: " << name << ", Sex: " << sex << ", Age: " << age << endl;
}
protected:
string name;
string sex;
int age;
};
class Worker : public People {
public:
Worker(string n, string s, int a, int i, double sal) : People(n, s, a), id(i), salary(sal) {
cout << "Worker constructor." << endl;
}
~Worker() {
cout << "Worker destructor." << endl;
}
void Show() {
cout << "Name: " << name << ", Sex: " << sex << ", Age: " << age << ", ID: " << id << ", Salary: " << salary << endl;
}
private:
int id;
double salary;
};
int main() {
People* p = new People("Tom", "Male", 30);
p->Show();
delete p;
Worker w("Jerry", "Male", 25, 1001, 5000.0);
w.Show();
return 0;
}
```
输出结果为:
```
People constructor.
Name: Tom, Sex: Male, Age: 30
People destructor.
People constructor.
Worker constructor.
Name: Jerry, Sex: Male, Age: 25, ID: 1001, Salary: 5000
Worker destructor.
People destructor.
```
解释如下:
首先定义了一个People类,其中包含了姓名、性别和年龄三个成员变量,以及构造函数、析构函数和输出函数。
然后从People类派生了一个工人类Worker,其中又增加了工号和工资两个成员变量,以及构造函数、析构函数和输出函数。
在主函数中,首先动态创建了一个基类对象p,并输出其信息。然后定义了一个派生类对象w,并输出其信息。由于基类的析构函数是虚函数,所以在delete p时会调用People类的析构函数,而在w的生命周期结束时,会先调用Worker类的析构函数,再调用People类的析构函数。
希望能够帮到您!
阅读全文