实验十二 继承与派生2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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; }