实验四 继承与派生(学生)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四:继承与派生(2)

一、实验目的和要求

(1)理解单继承与多继承,掌握多继承派生类的声明方式。

(2)掌握多继承派生类构造函数的定义的一般形式。

(3)掌握多继承构造函数与析构函数的执行顺序。

(4)掌握含有对象成员的派生类构构造函数的特点。

(5)理解类的继承可能发生的“二义性”问题(同名成员的访问)

二、知识点回顾

多继承构造函数定义的一般形式如下:

派生类名(参数总表):基类名1(参数表1),基类名2(参数表2),…,基类名n(参数表n) {

// 派生类新增成员的初始化语句

}

class B: public A class D:public A, public B, public C

{ {

B(int i,int j):A( i)

{ ….. D(int i,int j,int k, int l):A( i),B(j ),C( k),ob(l ) } { …….

}

}; };

…….

D obj(1,2,3,4);

多重继承构造函数的执行顺序与单继承下的构造函数执行顺序相同:

(1)先执行基类的构造函数。

(2)再执行对象成员的构造函数。

(3)最后执行派生类的构造函数体。

说明:处于同一层的各个基类的构造函数的执行顺序, 取决于声明派生类时所指定的各个基类的顺序, 与派生类构造函数中所定义的成员初始化列表中的顺序并没有关系.

说明:派生类构造函数后如未列出基类构造函数的调用,默认调用的是无参或带默认参数的构造函数。

三、实验内容

1. P191题4.15输入下列程序,分析程序运行结果........

。 理解多重继承(画出类的层次结构图),注意派生类构造函数的定义格式,注意构造函

数的执行顺序,注意同名成员的访问。

#include

#include

using namespace std;

class B1{

int b1;

public:

B1(int i)

{b1=i;

cout<<"Construcor B1."<

}

void print()

{ cout<

}

};

class B2{

int b2;

public:

B2(int i)

{b2=i;

cout<<"Construcor B2."<

}

void print()

{ cout<

}

};

class B3{

int b3;

public:

B3(int i)

{b3=i;

cout<<"Construcor B1."<

}

int getb3()

{ return b3;

}

};

class A:public B2,public B1{

int a;

B3 bb;

public:

A(int i,int j,int k,int l):B1(i),B2(j),bb(k) //此处注意派生类构造函数的定义格式

{a=l;

cout<<"Constructor A."<

}

void print() //

{ B1::print(); //同名成员的访问,注意消除二义性

B2::print(); //同名成员的访问

cout<

}

};

int main()

{ A aa(1,2,3,4);

aa.print(); //分析调用的是哪个print(). 同名覆盖(将基类的同名成员隐藏)return 0;

}

在以上程序的基础上,为每个类增加一个析构函数,析构函数体内容“Destructor X”,其中X写成具体的类名。

2.题4.21 设计一个显示小孩出生日期和时间的程序。

已有类Time和Date,要求设计一个派生类Birthtime,它继承类Time和Date,同时在Birthtime 类中增加一个数据成员childname用于表示小孩姓名,设计主程序显示一个小孩的出生时间和名字。

程序运行结果:

3. 题

4.22 编写一个学生和教师输入和显示程序。

学生数据有:编号no 、姓名name 、班号 c 、成绩 score

教师数据有:编号no 、姓名name 、职称title 、部门depart

要求将编号、姓名的输入和显示设计成一个类Person,并作为学生类Student 和Teacher 类的基类。

(从一个基类派生出多个派生类)

person

选择练习:题4.14 派生类构造函数调用基类构造函数(基类构造函数重载)

三、实验结果

四、总结

相关文档
最新文档