在上个程序中在teacher类和 student类之上增加一个共同的基类person,人员的一些基本数据放在person中,person定义为虚基类。
时间: 2024-02-20 22:56:45 浏览: 91
好的,我理解了你的问题。在上一个程序中,你希望在teacher类和student类之上增加一个共同的基类person,人员的一些基本数据放在person中,person被定义为虚基类。实现这个功能的代码如下所示:
```cpp
class person {
public:
virtual ~person() {}
protected:
string name;
int age;
};
class teacher : virtual public person {
public:
teacher(string _name, int _age, string _title) {
name = _name;
age = _age;
title = _title;
}
void show() {
cout << "name: " << name << endl;
cout << "age: " << age << endl;
cout << "title: " << title << endl;
}
protected:
string title;
};
class student : virtual public person {
public:
student(string _name, int _age, string _major) {
name = _name;
age = _age;
major = _major;
}
void show() {
cout << "name: " << name << endl;
cout << "age: " << age << endl;
cout << "major: " << major << endl;
}
protected:
string major;
};
```
在这个代码中,我们定义了一个名为person的基类。这个基类中包含了一些基本的人员数据,例如姓名和年龄。我们将person类定义为虚基类,这样在后面的派生类中,如果有多个继承自person的基类,就不会出现数据重复的问题。
同时,我们还定义了两个派生类teacher和student,它们都继承自person类。在这两个派生类中,我们可以定义它们自己的数据和方法,例如teacher类中的职称和student类中的专业。在这两个派生类中,我们都使用了虚继承的方式,这样可以避免在后面的多重继承中出现数据重复的问题。
最后,我们在派生类中都定义了一个show方法,用来显示这个人员的基本信息。在这个方法中,我们可以直接访问person类中的数据,也可以访问派生类中的数据。这样,我们就可以方便地输出一个人员的基本信息了。
阅读全文