- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四 继承与派生
实验目的:
掌握利用单继承和多重继承的方式定义派生类的方法;
深刻理解在各种继承方式下构造函数和析构函数的执行顺序;
理解和掌握公有继承,私有继承和保护继承对基类成员的访问机制;
理解虚基类的概念以及引入虚基类的目的和作用。
实验时间:
实验地点:
实验内容:
1.运行以下程序,并对运行结果进行分析
#include stdafx.h
#includeiostream
using namespace std;
class base{
int n;
public:
base(int a)
{coutconstructing base classendl;
n=a;
coutn=nendl;
}
~base(){coutdesstructing base classendl;}
};
class subs:public base
{
base bobj;
int m;
public:
subs(int a,int b,int c):base(a),bobj(c)
{coutconstructing sub classendl;
m=b;
coutm=mendl;
}
~subs(){coutdestructing sub classendl;}
};
void main()
{
subs s(1,2,3);
}
subs s(1,2,3);
subs(int a,int b,int c):base(a),bobj(c)
所以a=1,b=2,c=3,
class subs:public base,又因为base(a),所以先调用base 传一个参数的构造函数base(int a),(若此处删去base(a),则会出现如下错误
)
调用base(int a),所以有
然后,因为base bobj;所以这里还会调用base(int a)构造函数,此时传入的a值为bobj(c)中的c,即3,所以有
再者,才会调用subs的构造函数subs(int a,int b,int c):base(a),bobj(c)
相反,在调用析构函数的时候,顺序刚刚好相反,则
~base(){coutdesstructing base class==:nendl;}
~subs(){coutdestructing sub class==:mendl;}
2.设计一个圆类circle和一个桌子类table,另外设计一个圆桌类roundtable,从前2个类派生的,要求输出一个圆桌的高度,面积和颜色等数据。
Public继承
// 2.cpp : 定义控制台应用程序的入口点。
#include stdafx.h
#includeiostream
#includestring
using namespace std;
class circle{
private:
float R;
public:
circle(float r){
R=r;
}
void area(){
cout面积为:3.14*R*Rendl;
}
};
class table{
private:
float H;
string color;
public:
table(float h,string c){
H=h;
color=c;
}
void message(){
cout高度为:Hendl颜色为:colorendl;
}
};
class roundtable:public circle,public table{
public:
roundtable(float r,float h,string c):circle(r),table(h,c)
{}
};
int main(){
roundtable a(3,5,yellow);
a.area();
a.message();
return 0;
}
Protected继承
class roundtable:protected circle,protected table
Private继承
class roundtable:private circle,private table
3.设计一个虚基类base,包含姓名和年龄私有数据成员以及相关成员函数,由它派生出领导类leader,包含职务和部门私有数据成员以及相关成员函数。再由base派生出工程师类engineer,包含职务和专业私有数据成员以及相关成员函数。然后由leader和engineer类派生出主任工程师chairman。采用一些数据进行测试(写在构造函数里)
// 3.cpp : 定义控制台应
您可能关注的文档
最近下载
- 废旧塑料购销合同6篇.docx VIP
- 山东省烟台市芝罘区2022-2023学年七年级(五四学制)上学期期中地理试题(含答案).docx VIP
- 建筑工程施工技术交底大全.docx
- 柔性光伏钢构及组件安装施工方案.docx VIP
- 中成药学讲稿祛暑中成药.docx VIP
- 石油化工企业设计防火规范(GB50160-2018-).doc
- 山东省烟台市芝罘区(五四制)2023-2024学年六年级上学期期中考试生物试题(解析版).docx VIP
- 医疗机构医院感染管理专职人员管理办法(2020年版).pdf
- 南宁师范大学信息技术课程与教学考研真题试题2019年.pdf
- 加强风电设备管理提升风机可利用率(电力系统及自动化范文).doc
文档评论(0)