C++第5次实验- 教师类
2016-05-07 20:47
351 查看
<pre name="code" class="cpp">一 问题及代码:
/* *文件名称:Ex1.6cpp *作者:张艳华 *完成日期:2016年5月7日 *版本号:v1.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<string> using namespace std; class Teacher { public: Teacher(string _name,int _age,string _sex,string _title); void display(); private: string name; string title; string sex; int age; }; Teacher::Teacher(string _name,int _age,string _sex,string _title) { name=_name; sex=_sex; age=_age; title=_title; } void Teacher::display() { cout<<"姓名:"<<name<<endl; cout<<"年龄:"<<age<<endl; cout<<"性别:"<<sex<<endl; cout<<"职称:"<<title<<endl; } class Cadre { public: Cadre(string _name, int _age,string _sex,string _post); string getPost(); private: string name; string post; string sex; int age; }; Cadre::Cadre(string _name, int _age,string _sex,string _post) { name=_name; post=_post; sex=_sex; age=_age; } string Cadre::getPost() { return post; } class Teacher_Cadre:public Teacher,public Cadre { public: Teacher_Cadre(string _name,int _age,string _sex,string _title,string _post,double _wages); double getWages(); void show(); private: double wages; }; Teacher_Cadre::Teacher_Cadre(string _name,int _age,string _sex,string _title,string _post,double _wages):Teacher(_name,_age,_sex,_title),Cadre(_name,_age,_sex,_post),wages(_wages){} double Teacher_Cadre::getWages() { return wages; } void Teacher_Cadre::show() { Teacher::display(); cout<<"职务:"<<Cadre::getPost()<<endl; cout<<"工资:"<<wages<<endl; } int main() { Teacher_Cadre s("曾辉",42,"男","副教授","主任",1534.5); s.show(); return 0; }二 运行结果:
三 心得体会:派生类的应用中如果两个基类中含有相同的数据成员,在派生类构造函数中数据成员的用法应该注意,对多重继承的使用应该判是断否存在二义性,防止作用域出现冲突。
四 知识点总结:基类,派生类的应用,多重继承中考虑是否存在二义性问题
相关文章推荐
- c/c++中与时间相关的问题
- Contest 2016-5-7 B(HDU 5616)
- C++第五次上机实验
- C++课程上 有关“指针” 的小结
- C++中模板的使用
- C++中模板的使用
- c++上机实验5-项目三
- C++函数指针
- c语言内嵌汇编语法
- HDU2255 KM优化(n^3)模板
- Contest 2016-5-7 C(HDU 5617)
- Contest 2016-5-7 A(HDU 5615)
- 不用临时变量,交换整数a,b的值
- C/C++可变参数va_list
- 回调函数_结构体
- codeforces670D2 Magic Powder - 2 (二分)
- C++作业5
- c++ 基础知识整理(一)
- C++11六大函数(构造函数,移动构造函数,移动赋值操作符,复制构造函数,赋值操作符,析构函数)
- MWC-MultiWii.cpp主程序理解