习题 11.9 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/navicheung/article/details/82781138

C++程序设计(第三版) 谭浩强 习题11.9 个人设计

习题 11.9 分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)类。

1. 在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。

2. 在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。

3. 对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

4. 在类体中声明成员函数,在类外定义成员函数。

5. 在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

代码块:

#include <iostream>
#include <string>
using namespace std;
class Teacher
{
public:
	Teacher(string, int, char, string, int, string);
	void display();
protected:
	string name;
	int age;
	char sex;
	string addr;
	int tel;
	string title;
};
Teacher::Teacher(string nam, int a, char s, string ad, int te, string tit)
{
	name=nam; age=a; sex=s; addr=ad; tel=te; title=tit;
}
void Teacher::display()
{
	cout<<"name: "<<name<<endl;
	cout<<"age: "<<age<<endl;
	cout<<"sex: "<<sex<<endl;
	cout<<"title: "<<title<<endl;
	cout<<"address: "<<addr<<endl;
	cout<<"tel: "<<tel<<endl;
}
class Cadre
{
public:
	Cadre(string, int, char, string, int, string);
	void display1();
protected:
	string name;
	int age;
	char sex;
	string addr;
	int tel;
	string post;
};
Cadre::Cadre(string nam, int a, char s, string ad, int te, string po)
{
	name=nam; age=a; sex=s; addr=ad; tel=te; post=po;
}
void Cadre::display1()
{
	cout<<"name: "<<name<<endl;
	cout<<"age: "<<age<<endl;
	cout<<"sex: "<<sex<<endl;
	cout<<"address: "<<addr<<endl;
	cout<<"tel: "<<tel<<endl;
	cout<<"post: "<<post<<endl;
}
class Teacher_Cadre: public Teacher, public Cadre
{
public:
	Teacher_Cadre::Teacher_Cadre(string nam, int a, char s, string ad, int te, string tit, string po, double w):
	  Teacher(nam, a, s, ad, te, tit), Cadre(nam, a, s, ad, te, po), wage(w){}
	void show();
private:
	double wage;
};

void Teacher_Cadre::show()
{
	Teacher::display();
	cout<<"post: "<<Cadre::post<<endl;
	cout<<"wage: "<<wage<<endl;
};
int main()
{
	Teacher_Cadre person("ZhangLei", 23, 'M', "Beijing", 87891611, "professor", "assitant", 8981.4);
	person.show();
	system("pause");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/navicheung/article/details/82781138