设计person类,包括私有数据成员:姓名;设计student类继承person类,新增私有数据成员:班级;设计类worker继承person类,新增私有数据成员:职业;设计类studentworker继承student类和worker类,新增私有数据成员:工资;在主函数中定义一个studentworker类的对象,调用该对象的show函数输出该对象的信息。
时间: 2024-02-20 13:58:36 浏览: 60
Java面向对象编程之类的继承详解
以下是对应的 C++ 代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Person {
private:
string name;
public:
Person(string _name) : name(_name) {}
virtual void show() {
cout << "Name: " << name << endl;
}
};
class Student : public Person {
private:
string class_name;
public:
Student(string _name, string _class_name) : Person(_name), class_name(_class_name) {}
void show() {
cout << "Name: " << Person::name << endl;
cout << "Class: " << class_name << endl;
}
};
class Worker : public Person {
private:
string job;
public:
Worker(string _name, string _job) : Person(_name), job(_job) {}
void show() {
cout << "Name: " << Person::name << endl;
cout << "Job: " << job << endl;
}
};
class StudentWorker : public Student, public Worker {
private:
double salary;
public:
StudentWorker(string _name, string _class_name, string _job, double _salary) : Student(_name, _class_name), Worker(_name, _job), salary(_salary) {}
void show() {
cout << "Name: " << Person::name << endl;
cout << "Class: " << Student::class_name << endl;
cout << "Job: " << Worker::job << endl;
cout << "Salary: " << salary << endl;
}
};
int main() {
StudentWorker sw("Tom", "Class 1", "Engineer", 5000);
sw.show();
return 0;
}
```
在这个程序中,我们首先定义了一个 `Person` 类,其中包括一个私有成员变量 `name`,表示人名,以及一个虚函数 `show`,用于输出人名。接着,我们定义了一个 `Student` 类,继承了 `Person` 类,新增了一个私有成员变量 `class_name`,表示班级,以及一个重载的 `show` 函数,用于输出人名和班级。我们还定义了一个 `Worker` 类,也继承了 `Person` 类,新增了一个私有成员变量 `job`,表示职业,以及一个重载的 `show` 函数,用于输出人名和职业。最后,我们定义了一个 `StudentWorker` 类,继承了 `Student` 类和 `Worker` 类,新增了一个私有成员变量 `salary`,表示工资,以及一个重载的 `show` 函数,用于输出人名、班级、职业和工资。
在主函数中,我们创建了一个 `StudentWorker` 类的对象 `sw`,并调用了它的 `show` 函数,输出了该对象的信息。
阅读全文