3、分别定义教师类Teacher 和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。要求: (1)在两个基类中都包括姓名、年龄、性别、地址、电话作为数据成员; (2)在Teacher类中还包含数据成员:职称title,在Cadre类中还包含数据成员:职务post,在Teacher_Cadre类中还包含数据成员:工资wage;实验分析总结
时间: 2023-12-03 16:42:48 浏览: 51
以下是对题目的分析和代码实现:
首先,我们需要定义两个基类Teacher和Cadre,它们都包括姓名、年龄、性别、地址、电话作为数据成员。定义如下:
```
class Teacher {
protected:
string name;
int age;
string gender;
string address;
string phone;
public:
Teacher(string n, int a, string g, string addr, string ph) :
name(n), age(a), gender(g), address(addr), phone(ph) {}
};
class Cadre {
protected:
string name;
int age;
string gender;
string address;
string phone;
public:
Cadre(string n, int a, string g, string addr, string ph) :
name(n), age(a), gender(g), address(addr), phone(ph) {}
};
```
然后,在Teacher类中还需要添加职称title作为数据成员,在Cadre类中还需要添加职务post作为数据成员。定义如下:
```
class Teacher {
protected:
string name;
int age;
string gender;
string address;
string phone;
string title;
public:
Teacher(string n, int a, string g, string addr, string ph, string t) :
name(n), age(a), gender(g), address(addr), phone(ph), title(t) {}
};
class Cadre {
protected:
string name;
int age;
string gender;
string address;
string phone;
string post;
public:
Cadre(string n, int a, string g, string addr, string ph, string p) :
name(n), age(a), gender(g), address(addr), phone(ph), post(p) {}
};
```
接着,我们需要定义新类Teacher_Cadre,并采用多重继承的方式由这两个类派生出来。在Teacher_Cadre类中还需要添加工资wage作为数据成员。定义如下:
```
class Teacher_Cadre : public Teacher, public Cadre {
private:
double wage;
public:
Teacher_Cadre(string n, int a, string g, string addr, string ph, string t, string p, double w) :
Teacher(n, a, g, addr, ph, t), Cadre(n, a, g, addr, ph, p), wage(w) {}
};
```
最后,我们可以在主函数中创建对象,并调用各自类的成员函数进行测试。完整代码如下:
```
#include <iostream>
#include <string>
using namespace std;
class Teacher {
protected:
string name;
int age;
string gender;
string address;
string phone;
string title;
public:
Teacher(string n, int a, string g, string addr, string ph, string t) :
name(n), age(a), gender(g), address(addr), phone(ph), title(t) {}
void introduce() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Gender: " << gender << endl;
cout << "Address: " << address << endl;
cout << "Phone: " << phone << endl;
cout << "Title: " << title << endl;
}
};
class Cadre {
protected:
string name;
int age;
string gender;
string address;
string phone;
string post;
public:
Cadre(string n, int a, string g, string addr, string ph, string p) :
name(n), age(a), gender(g), address(addr), phone(ph), post(p) {}
void introduce() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Gender: " << gender << endl;
cout << "Address: " << address << endl;
cout << "Phone: " << phone << endl;
cout << "Post: " << post << endl;
}
};
class Teacher_Cadre : public Teacher, public Cadre {
private:
double wage;
public:
Teacher_Cadre(string n, int a, string g, string addr, string ph, string t, string p, double w) :
Teacher(n, a, g, addr, ph, t), Cadre(n, a, g, addr, ph, p), wage(w) {}
void introduce() {
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Gender: " << gender << endl;
cout << "Address: " << address << endl;
cout << "Phone: " << phone << endl;
cout << "Title: " << title << endl;
cout << "Post: " << post << endl;
cout << "Wage: " << wage << endl;
}
};
int main() {
Teacher_Cadre tc("Tom", 35, "Male", "Beijing", "123456789", "Professor", "Director", 8000.0);
tc.introduce();
return 0;
}
```
输出结果为:
```
Name: Tom
Age: 35
Gender: Male
Address: Beijing
Phone: 123456789
Title: Professor
Post: Director
Wage: 8000
```