第12周-任务2-双肩挑干部

简介: 【题目】(教材P394习题9)分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求: (1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。 (2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据

【题目】(教材P394习题9)分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。

(有高校中,有行政职务的教师,称为“双肩挑”。我挑过,挑不动,就撂了一头,成了现在这个样子。)


【简析】本题中的关键是在两个基类中有同名的数据成员,产生了由多重继承引起的二义性问题。在派生类中,需要通过“类名::成员名"的形式解决。这是解决这类问题的一种办法。


【参考代码】

#include<string>
#include <iostream>
using namespace std;
class Teacher
{
public:
	Teacher(string nam,int a,char s,string tit,string ad,string t);
	void display();
protected:
	string name;
	int age;
	char sex;
	string title;
	string addr;
	string tel;
};

Teacher::Teacher(string nam,int a,char s,string tit,string ad,string t):
name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){ }

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 nam,int a,char s,string p,string ad,string t);
	void display();
protected:
	string name;
	int age;
	char sex;
	string post;
	string addr;
	string tel;
};

Cadre::Cadre(string nam,int a,char s,string p,string ad,string t):
name(nam),age(a),sex(s),post(p),addr(ad),tel(t){}

void Cadre::display()
{
	cout<<"name:"<<name<<endl;
	cout<<"age:"<<age<<endl;
	cout<<"sex:"<<sex<<endl;
	cout<<"post:"<<post<<endl;
	cout<<"address:"<<addr<<endl;
	cout<<"tel:"<<tel<<endl;
}

class Teacher_Cadre:public Teacher,public Cadre
{
public:
	Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w);
	void show( );
private:
	float wage;
};

Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,string tel,float w): 
Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) {}

void Teacher_Cadre::show( )
{
	Teacher::display();
	cout<<"post:"<<Cadre::post<<endl;
	cout<<"wages:"<<wage<<endl;
}

int main( )
{
	Teacher_Cadre te_ca("Wang-li",50,'f',"prof.","president","135 Beijing Road,Shanghai","(021)61234567",1534.5);
	te_ca.show( );
	system("pause");
	return 0;
}


目录
相关文章
|
数据可视化 测试技术 开发工具
吭哧吭哧开发2周,老板突然说这个功能不要了。。。
吭哧吭哧开发2周,老板突然说这个功能不要了。。。
吭哧吭哧开发2周,老板突然说这个功能不要了。。。
|
NoSQL 关系型数据库 Linux
飞天加速计划2周体检
在一个偶然的机会,得知了阿里的飞天加速计划,一顿操作之后,获得了两周的体验机会;现在我来讲讲这两周的使用体验,希望可以给需要的一些帮助。
周末分享:如何在一周内摸清一个行业
 在和咨询、投行、投资、猎头这些行业的人聊天的时候,我反复听到“一周”这个时间,于是我也开始好奇:你们是在什么情况下需要在一个星期之内了解一个行业?你们都是如何做到在一个星期之内摸清一个行业的? 在一周之内“摸清”一个行业依然不可能成为这个行业的顶尖专家,也不可能成为这个行业的一个高管。
913 0
|
C++ C语言
C++第11周(春)项目2 - 职员有薪水了
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目2 - 职员有薪水了】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分
969 0
|
存储 C++ 机器学习/深度学习
C++第7周(春)项目6 人数不定的工资类
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目6-人数不定的工资类】  设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出。  提示:用固定大小的数组存储number个职工的工资
872 0
|
JavaScript 前端开发 Java
小公司工作一月小感
    从工作开始到现在差不多快一个月了,下面总结一下自己从工作以来的收获。          首先说说这个公司,公司规模不大,可以说是家庭作坊式的小公司,从开发文档,到建模到架构,编码风格,代码注释等等都没有一定的要求。
589 0
|
C++
C++第11周项目5——歌手大奖赛计分
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 【项目5-歌手大奖赛计分系列】  参考运行图:      (1)在歌手大奖赛中,有10个评委为参赛的选手打分,分数为0~10分(运行时由人控制)。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现(可以先不考虑用自定义函数实现)。
1375 0
|
C++
C++第8周项目3小贺的工资
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 【项目3:加班费,要不要?】小贺刚上班,按计时制领工资,每小时rate元RMB。每周工作时间40小时,如果要加班,超出部分按正常工资的1.5倍计(老板还算不错喔!)。这周小贺上班的时间为hour小时,请编程序,输入rate和hour,输出小贺本周的薪水。 参考解答:
898 0
|
人工智能 测试技术 C++
C++第16周项目1 -旧题再做涨工资
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/9078413 【项目1】旧题再做涨工资   从文件salary.txt中读入500名工人的工资,共享改革开放成果工资全翻番,将由低到高排序后的结果在屏幕上输
1224 0