实验四----继承与派生.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 : 定义控制台应

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档