实验5 继承与派生 下载本文

《C++面向对象程序设计》实验报告

实验5 继承与派生

序号: [实验目的]

1、了解继承在面向对象程序设计中的重要作用; 2、进一步理解继承与派生的概念;

3、学会通过继承派生出一个新类的方法; [实验要求]

给出以下各实验内容的源程序代码,并把编译、运行过程中出现的问题以及解决方法填入实验报告中,按时上交。 [实验学时] 2学时。 [实验内容]

1、声明一个人员类(Person),包括3个数据成员:name(姓名)、age(年龄)、sex(性别);2个成员函数:构造函数和输出相关信息的函数display()。利用单继承的方式声明一个学生(Student)派生类,其中增加2个数据成员:grade(年级)、score(总学分);3个成员函数:构造函数、输出函数show()和增加学分的函数add()。在定义派生类对象时给出初始化的数据,然后输出这些数据。 [源程序]

#include #include using namespace std; class Person {

public:

Person(string na,int ag,string se) { name=na;age=ag;sex=se; } void display() { cout<<\ cout<<\ cout<<\

第 1 页 共 11 页

《C++面向对象程序设计》实验报告

} private: string name; int age; string sex; };

class Student : public Person {

public: Student(string na,int ag,string se,string gr,float sc):Person(na,ag,se) { grade=gr;score=sc; }

void show() { display(); cout<<\ cout<<\ }

void add(); private: string grade; float score; };

int main() { Student stu1(\小明\男\广告11A-2\ stu1.show(); return 0; }

2、分别定义教师 (Teacher)类和干部 (Cadre)类,采用多重继承方式由这两个类派生出新类:教师兼干部(Teacher_Cadre)。要求: ① 在两个基类中都包含姓名、性别、地址、电话等数据成员。 ② 在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务), 在Teacher_Cadre类中还包含数据成员wages(工资)。

第 2 页 共 11 页

《C++面向对象程序设计》实验报告

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

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

⑤ 在派生类Teacher_Cadre的成员函数show()中调用Teacher类中的display()函数,输出姓名、性别、职称、地址、电话,然后再用cout语句输出职务与工资。 [源程序]

#include #include using namespace std; class Teacher { };

Teacher::Teacher(string na,string se,string ti,string ad,long ph) { }

第 3 页 共 11 页

public:

Teacher(string na,string se,string ti,string ad,long ph); void display(); string name; string sex; string title; string address; long phone;

protected:

name=na; sex=se; title=ti; address=ad; phone=ph;