实验七 继承与派生

更新时间:2024-03-11 20:35:01 阅读量: 综合文库 文档下载

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

实验七 继承与派生

【实验目的】

1、 掌握继承的概念。

2、 理解派生类与基类的关系。 3、 理解不同的继承类型。

4、 掌握继承下的构造函数和析构函数。 5、 掌握单继承和多继承使用方法。 6、 理解静态成员。

【实验内容】

1、上机分析下面程序,理解继承下构造函数和析构函数的执行顺序。 #include class A {

public: A() {

cout<<\}

A( int m ) : x( m ) {

cout<<\} ~A() {

cout<<\} private: int x; };

class B : public A {

public: B() {

cout<<\}

B( int m, int n, int l ) : A( m ), a( n ), y( l ) {

cout<<\} ~B() {

cout<<\} private: A a; int y; };

int main() {

B b1, b2(5,6);

return 0;

}

2、在下面一段类定义中,Derived类是有直接基类Base1和Base2所派生的,Derived类包含有两个间接基类Base,在初始化函数Init中,需要把x1和x2的值分别赋给属于基类Base1的x成员和属于基类Base2的x成员。

#include class Base{ protected: int x; public:

Base(){x=0;} };

class Base1:public Base{ public:

Base1(){} };

class Base2:public Base{ public: Base2(){} };

class Derived: (1) {

public:

Derived(){}

void Init(int x1,int x2){ (2) ; (3) ; }

void output(){cout<

void main() {

Derived d; d.Init(5,9); d.output(); }

3、在下面一段类定义中,Derived类公有继承了基类Base。需要填充的函数有注释内容给出了功能。

#include class Base{ private:

int mem1,mem2; public:

Base(int m1,int m2) {mem1=m1;mem2=m2;}

void output(){cout<

class Derived:public Base {

private: int mem3; public:

//构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3 Derived(int m1,int m2,int m3);

//输出mem1,mem2和mem3数据成员的值 void output(){

(1) ; cout<

Derived::Derived(int m1,int m2,int m3): (2) { (3) ;}

4、上机分析下面程序,掌握静态成员 include class sample {

public:

sample ( ){ ++n; }

static int HM(){ return n; } ~sample ( ){ --n; } private: static int n; };

int sample::n = 10; int main() {

sample c1,c2;

sample *p = new sample(); cout<

cout<

5、设计一个具有继承和派生的类,分析程序输出结果,理解类的继承与派生。 参考程序:

#include class A {

public:

void f(int i)

{cout<

{cout<<\};

class B:A {

public:

void h(){cout<<\ A::f; };

void main() {

B d1; d1.f(6); d1.g(); d1.h(); }

问题:

⑴、 执行该程序时,哪个语句会出现编译错误?为什么? ⑵、 去掉出错语句后,执行该程序后输出结果如何?

⑶、 程序中派生类B是从基类A中继承来的,这种缺省继承方式是哪种继承方式? ⑷、 派生类B中,A::f的含意是什么?

⑸、 将派生类B的继承改为公有继承方式该程序将输出什么结果?

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

Top