问题及代码:
知识点总结:
多继承。
/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:Teacher_Cadre.cpp
*作 者:单昕昕
*完成日期:2015年5月23日
*版 本 号:v1.0
*问题描述:
分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:
(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2)在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre类中还包含数据成员wages(工资)。
(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。
(4)在类体中声明成员函数,在类外定义成员函数。
(5)在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。
*程序输入:无。
*程序输出:姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。
*/
#include <iostream>
#include <cstring>
using namespace std;
class Teacher //声明Teacher(教师)类
{
public:
Teacher(string nam,int a,char s,string tit,string ad,int ph);
void display( );
protected:
int age,phone; //年龄,电话
char sex; //性别
string name,addr,title; //姓名,地址,职称
};
Teacher::Teacher(string nam,int a,char s,string tit,string ad,int ph):
name(nam),age(a),sex(s),title(tit),addr(ad),phone(ph) { }
void Teacher::display( )
{
cout<<"姓名:"<<name<<'\n'<<"年龄:"<<age<<'\n'<<"性别:"<<sex<<'\n'<<"职称:"<<title<<'\n'<<"地址:"<<addr<<'\n'<<"电话:"<<phone<<'\n';
}
class Cadre //声明Cadre(干部)类
{
public:
Cadre(string nam,int a,char s,string p,string ad,int ph);
string getpost();
private:
int age,phone; //年龄,电话
char sex; //性别
string name,addr,post; //姓名,地址,职务
};
Cadre::Cadre(string nam,int a,char s,string p,string ad,int ph):
name(nam),age(a),sex(s),post(p),addr(ad),phone(ph) {}
string Cadre::getpost()
{
return post;
}
class Teacher_Cadre:public Teacher,public Cadre //声明派生类Teacher_Cadre(教师兼干部)
{
public:
Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,int ph,double w);
void show( );
private:
double wages; //工资
};
void Teacher_Cadre::show( )
{
Teacher::display( );
cout<<"职务:"<<Cadre::getpost()<<'\n'<<"工资:"<<wages<<'\n';
}
Teacher_Cadre::Teacher_Cadre(string nam,int a,char s,string t,string p,string ad,int ph,double w):
Teacher(nam,a,s,t,ad,ph),Cadre(nam,a,s,p,ad,ph),wages(w) {}
int main( )
{
Teacher_Cadre tc("Li",30,'m',"讲师","辅导员","32 Qingquan Road,Yantai,Shandong",123456789,1234.5);
tc.show( ); //输出信息
return 0;
}
运行结果:
知识点总结:
多继承。
学习心得:
在Teacher_Cadre的初始化和实现的时候出了问题,感觉这个地方还不是很熟练,有的知识点都木有想到。