实验十二 继承与派生2

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

实验十二继承与派生(二)

1、实验目的

掌握利用单继承和多重继承的方式定义派生类的方法;深刻理解在各种继承方式下构造函数和析构函数的执行顺序;理解和掌握公有继承、私有继承和保护继承对基类成员的访问机制;理解虚基类的概念以及引入虚基类的目的和作用。

2、实验内容

(1)有以下程序,请完成下面工作:

1阅读程序,写出运行时输出的结果。

②然后上机运行,验证结果是否正确。

③分析程序执行过程,尤其是调用构造函数和析构函数的过程。

constructing A

constructing B

constructing C

destructing C

destructing B

destructing A

(2)设计一个圆类Circle和一个桌子类Table,再设计一个圆桌类Roundtable,它是从前

两个类派生出来的。要求输出圆桌的高度、面积、颜色等数据,其中,类Circle包含数据成员radius和圆面积的成员函数,类Table包含数据成员height和返回高度的成员函数,类Roundtable再添加数据成员color和相应的成员函数。

// 123.cpp : 定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include

#include

using namespace std;

//设计一个圆类Circle和一个桌子类Table,再设计一个圆桌类Roundtable,它是从前两个类派生出来的。//要求输出圆桌的高度、面积、颜色等数据,其中,类Circle包含数据成员radius和圆面积的成员函数,//类Table包含数据成员height和返回高度的成员函数,类Roundtable再添加数据成员color和相应的成员函数。

class circle

{

private :

int radius;

public :

double area;

circle ()

{

radius=0;

}

circle (int r)

radius=r;

area=3.14*radius*radius;

}

int getradius()

{

return radius;

}

double getarea()

{

return area;

}

};

class table

{

private:

int height;

public :

table (int h)

{

height=h;

}

table ()

{

height=0;

}

int getheight()

{

return height;

}

};

class roundtable :public circle,public table

{

private :

string color;

public :

roundtable (int r,int h,string c): circle (r), table (h) {color=c;}

void display(roundtable r)

{

cout<<"radius:"<

};

int _tmain(int argc, _TCHAR* argv[])

{

roundtable r1(1,2,"red");

r1.display(r1);

return 0;

}

(3)设计一个基类Person,包含name和age两个数据成员;由它派生出学生类Student

和教师类Teacher,其中学生类添加学号,教师类添加职称信息;每个类均有构造函数和析构函数;编程实现,并用一些数据进行测试。

// 123.cpp : 定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include

#include

using namespace std;

//(3) 设计一个基类Person,包含name和age两个数据成员;由它派生出学生类Student和教师类Teacher,

//其中学生类添加学号,教师类添加职称信息;每个类均有构造函数和析构函数;编程实现,并用一些数据进行测试。

class person

{

private:

char name;

int age;

public:

person(char n,int a=0)

{

name=n;

age=a;

cout<<"constructing person"<

}

~person(){cout<<"desstructing person"<

char getname()

{

return name;

}

相关文档
最新文档