C实验三继承和派生类(附答案解析)

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

实验三继承和派生类

实验目的和要求

1.理解类的继承的概念,能够定义和使用类的继承关系。

2.掌握派生类的声明与定义方法。

3.熟悉公有派生和私有派生的访问特性。

4.学习虚基类在解决二义性问题中的作用。

实验内容

1.先阅读下面的程序,分析程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。

(1)

#include

class A

{

public:

A()

{

cout<<"A::A() called.\n";

}

~A()

{

cout<<"A::~A() called.\n";

}

};

class B:public A

{

public:

B(int i)

{

cout<<"B::B() called.\n";

buf=new char[i];

}

~B()

{

delete []buf;

cout<<"B:~B() called.\n";

}

private:

char *buf;

};

void main()

{

B b(10);

}

(2)

#include

class A

{

public:

A(int a,int b):x(a),y(b)

{

cout<<"A constructor..."<

}

void Add(int a,int b)

{

x+=a;

y+=b;

}

void display()

{

cout<<"("<

}

~A()

{

cout<<"destructor A..."<

}

private:

int x,y;

};

class B:private A

{

private:

int i,j;

A Aobj;

public:

B(int a,int b,int c,int d):A(a,b),i(c),j(d),Aobj(1,1) {

cout<<"B constructor..."<

}

void Add(int x1,int y1,int x2,int y2)

{

A::Add(x1,y1);

i+=x2;

j+=y2;

}

void display()

{

A::display();

Aobj.display();

cout<<"("<

}

~B()

{

cout<<"destructor B..."<

}

};

void main()

{

B b(1,2,3,4);

b.display();

b.Add(1,3,5,7);

b.display();

}

(3)

#include

class A

{

public:

A(int a):x(a)

{

cout<<"A constructor..."<

}

int f()

{

return ++x;

}

~A()

{

cout<<"destructor A..."<

}

private:

int x;

};

class B:public virtual A

{

private:

int y;

A Aobj;

public:

B(int a,int b,int c):A(a),y(c),Aobj(c)

{

cout<<"B constructor..."<

}

int f()

{

A::f();

Aobj.f();

return ++y;

}

void display()

{

cout<

}

~B()

{

cout<<"destructor B..."<

}

};

class C:public B

{

public:

C(int a,int b,int c):B(a,b,c),A(0)

{

cout<<"C constructor..."<

}

class D:public C,virtual public A

{

public:

D(int a,int b,int c):C(a,b,c),A(c)

{

cout<<"D constructor..."<

}

~D()

{

cout<<"destructor D..."<

}

};

void main()

{

D d(7,8,9);

d.f();

d.display();

}

(4)

#include

class Base1

相关文档
最新文档