/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:刘涛 * 完成日期:2016年5月9日 * 版本号:vc++6.0 * 问题描述:分别定义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<cstring> using namespace std; class Teacher { private: string name; int age; string sex; string address; long phoneNumber; string title; //职称 public: Teacher(string nam,int a,string se,string addr,long phoneNum,string ti); void display(); }; Teacher::Teacher(string nam,int a,string se,string addr,long phoneNum,string ti) { name=nam; age=a; sex=se; address=addr; phoneNumber=phoneNum; title=ti; } void Teacher::display() { cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"性别:"<<sex<<endl; cout<<"地址:"<<address<<endl; cout<<"电话号码:"<<phoneNumber<<endl; cout<<"职称:"<<title<<endl; } /*----------------------------------------------------------------------------------------*/ class Cadre { string name; int age; string sex; string address; long phoneNumber; string post; //职务 public: Cadre(string nam,int a,string se,string addr,long phoneNum,string po); void display(); string getPost(); }; Cadre::Cadre(string nam,int a,string se,string addr,long phoneNum,string po) { name=nam; age=a; sex=se; address=addr; phoneNumber=phoneNum; post=po; } void Cadre::display() { cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"性别:"<<sex<<endl; cout<<"地址:"<<address<<endl; cout<<"电话号码:"<<phoneNumber<<endl; cout<<"职务:"<<post<<endl; } string Cadre::getPost() { return post; } /*---------------------------------------------------------------------------------------------------*/ class Teacher_Cadre:public Teacher,public Cadre { private: double wages; public: Teacher_Cadre(string nam,int a,string se,string addr,long phoneNum,string ti,string po,double wag): Teacher(nam,a,se,addr,phoneNum,ti),Cadre(nam,a,se,addr,phoneNum,po),wages(wag){} void show(); double getWages(); }; double Teacher_Cadre::getWages() { return wages; } void Teacher_Cadre::show() { cout<<"输出教师信息"<<endl; Teacher::display(); cout<<endl; cout<<"干部职务:"<<Cadre::getPost()<<endl; cout<<"教师兼干部的工资:"<<getWages()<<endl; } int main() { Teacher_Cadre tc("刘涛",19,"Man","山东省济南市市中区",12345,"总裁","CEO",100000); tc.show(); } 运行结果:
<img src="http://img.blog.csdn.net/20160509091401553?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
知识点总结:
多重继承,两个基类一个派生类。
还有就是当函数名相同的时候,调用时需要加上类名::做区分。
当数据成员是私有的,调用需要借助成员函数。或者数据成员声明为保护类型的。
学习心得:
平时有多个类的时候,函数名或者数据成员名字尽量不能重复使用,避免错误发生。
当重名的时候,在派生类中声明,直接用基类名区分就可以,不用重复定义。
学习心得:
时间: 2024-11-03 03:03:47