实验3 继承与派生

更新时间:2023-10-07 00:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验3 继承与派生 (4学时) 实验目的:

1.学会从现有类派生出新类的方式。

2.了解基类成员在派生类中的访问控制。

3.熟悉派生类中构造函数和析构函数的调用顺序。 4.掌握虚基类的作用和用法。

实验内容:

1.仔细阅读下列程序,写出运行结果。

#include class A { public:

A(int m){ cout<<\~A(){ cout<<\}; class B { public:

B(int n){ cout<<\B(){cout<<\};

class C: public B,public A { public:

C(int a,int b,int c,int d,int e):A(b),B(e),bb(c),aa(d) { cout<<\~C(){ cout<<\private: A aa; B bb; };

int main()

{ C cc(1,2,3,4,5); }

分析:注意派生类和基类中构造函数和析构函数的调用顺序。 程序输出结果如下:

B constructor:5 A constructor:2

A constructor:4 B constructor:3 C constructor:1 C destructor B destructor

A destructor A destructor B destructor

2.定义一个Person类,数据成员包含能够保存姓名的变量name,其中有能够输出姓名的成员函数PrintName()。

现从Person类派生出Worker 类,该类包括数据成员number用来记录对象的工号、sex用来记录对象的性别、age用来记录对象年龄、add用来记录对象的家庭住址;包括函数成员printinfor()用来输出对象的个人信息。 要求:

⑴ 构造Worker类对象输出该对象的工号、年龄、家庭住址等信息。 ⑵ 在Worker类的printinfor()成员函数中须调用Person类的成员函数PrintName()。

输出结果如:丁一 10127 男 28 长江路369号

3.定义基类Student,含有私有数据成员num、name、sex,公有成员函数get_value()用于输入数据,display()用于输出数据。定义派生类Student1(从基类公有继承),含有私有数据成员age、addr,设计派生类的成员函数,使程序运行时输入num、name、sex、age、addr的值,程序应输出以上5个数据的值。 4.修改上面的程序,基类数据成员为保护类型,派生类从基类保护继承,实现输入和输出5个数据成员的值。

5.分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:①在两个基类中都包含一部分相同名字的数据成员name(姓名),age(年龄)和成员函数display()。②在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Teacher_Cadre(教师兼干部)中还包含数据成员wages(工资)。③在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、职称,然后再用cout语句输出职务与工资。

参考答案:

2. #include #include using namespace std; class Person{ private:

string name; public:

Person(string nm){name=nm;}

void PrintName(){cout << \};

class Worker:public Person { private:

string number; string sex; int age;

string addr; public:

Worker(string nm,string num,string sx,int ag,string add):Person(nm) {number=num; sex=sx; age=ag; addr=add; }

void printinfor(){ PrintName();

cout << \ cout << \ cout << \ cout << \ } };

int main(){

Worker a(\丁一\男\长江路369号\a.printinfor(); return 0; }

3. #include #include using namespace std; class Student{ private:

string number; string name; string sex; public:

void get_value(string num,string nm,string sx) {

number=num; name=nm; sex=sx;

}

void display(){

cout << \cout << \cout << \} };

class Student1:public Student { private: int age;

string addr; public:

void get_value1(string num,string nm,string sx,int ag,string add) {

get_value(num,nm,sx); age=ag; addr=add; }

void display1(){ display();

cout << \ cout << \} };

int main(){ Student1 a;

a.get_value1(\丁一\男\长江路369号\a.display1(); return 0; }

4. #include #include using namespace std; class Student{ protected:

string number; string name; string sex; public:

void get_value(string num,string nm,string sx) {

number=num; name=nm; sex=sx; }

void display(){

cout << \cout << \cout << \} };

class Student1:protected Student { private: int age;

string addr; public:

void get_value1(string num,string nm,string sx,int ag,string add) {

get_value(num,nm,sx); age=ag; addr=add; }

void display1(){ display();

cout << \ cout << \} };

int main(){ Student1 a;

a.get_value1(\丁一\男\长江路369号\a.display1(); return 0; }

本文来源:https://www.bwwdw.com/article/qu7d.html

Top