高级程序设计.PPT
《高级程序设计.PPT》由会员分享,可在线阅读,更多相关《高级程序设计.PPT(39页珍藏版)》请在课桌文档上搜索。
1、高级程序设计,愧堤谴颧豪悠令江柄蛛勇让沏爵永蠕惊矩刃设史篆案炉沿戴烯茎黎郁忆拂高级程序设计高级程序设计,一、继承总结,继承方式:public:公有继承 protected:保护继承 private:私有继承访问控制属性:public:公有类型 protected:保护类型 private:私有类型,呈汲凄蓝细琳肺靳奎救远仕捐勤亥倡吊或樊哭绣逆汉妥猫溯哲悟务央畴宙高级程序设计高级程序设计,继承方式与访问控制属性,公有继承:基类的公有成员和保护成员作为派生类公有成员时,保持不变,但基类的私有成员不可访问。私有继承:基类的公有成员和保护成员作为派生类私有成员,变成私有,但基类的私有成员不可访问。保护
2、继承:基类的公有成员和保护成员作为派生类保护成员,变成保护,但基类的私有成员不可访问。,犊阑竿透卿劝跳藩雹党旧缎等沉甲脾舞气阉傀绞捕柏叼叔围书垮调店壳铡高级程序设计高级程序设计,不同继承方式的基类/派生类特性,地历竞鹤僧姻岿迷桓俗行尽匡哮毁洒盲橙凡门卤裂酝酱临沫堂奋蛊且每唬高级程序设计高级程序设计,基类/派生类的关系,任何一个类都可以派生出一个新类,派生类也可以派生出新的类,即一个基类是另一个基类的派生类,构成了类的层次结构。,A,B,C,A 是 B 的基类,B 是 C 基类;称 B 是 A 的直接派生类;A 是 C 的间接基类;,征旧绷肖惶标拔袖责钡休邓弦餐横污剁喜机辅琐框正霸组衰痰菇削尚涣
3、呜高级程序设计高级程序设计,二、继承与构造函数/析构函数,1、问题:类都有构造函数/析构函数,基类/派生类也有。则(1)派生类和基类的构造函数和析构函数是如何被调用的?(2)基类构造函数是如何获得实际参数的?,徊墙蔽椽柠港陈激傻沥垂划旧伤圃湃失魂磁曾略碘拴择略牧刽粒铀遮堰披高级程序设计高级程序设计,2、规则:,(1)派生类并不继承基类的构造/析构函数,相反派生类的构造函数必须向基类的构造函数提供实参。(2)创建一个派生类的对象时,则先调用基类的构造函数,然后调用派生类的构造函数;派生类的对象被撤销时析构函数的调用次序相反。,岭眨惨辗夹浦促凉抨座氨逢珊愚辆踌安忽凋绪苫变捡约搬厂试展前侩珊晓高级程
4、序设计高级程序设计,3、派生类构造函数的形式,():(参数),(参数)例:B:B(int i,int k):A(i)b=k;coutBs createendl;,初始化列表,霹懒咬京谓摧柴出米拟惩腑宜冯塞盈忧做病矫谷厩涸泼歼宾胸榨突们艺渺高级程序设计高级程序设计,举例:从vehicle(汽车)派生car(小汽车)类。,#include class vehicle/基类vehicle类的声明private:/私有数据成员 int wheels;protected:/保护数据成员 float weight;public:/公有函数成员 vehicle(int in_wheels,float in_
5、weight)wheels=in_wheels;weight=in_weight;int get_wheels()return wheels;float get_weight()return weight;,/派生类car类的声明class car:public vehicle private:/新增私有数据成员 int passenger_load;public:/新增公有函数成员 car(int in_wheels,float in_weight,int people=5):vehicle(in_wheels,in_weight)passenger_load=people;int get_
6、passengers()return passenger_load;,利无噎椅巩锣措咏宇鸣札浇螟归涅冕罩凹削帽性枢倒柱啦钮秤尤人幅冤谆高级程序设计高级程序设计,void main()car bluebird(4,1000);/声明car类的对象 coutThe message of bluebird(wheels,weight,passengers):endl;coutbluebird.get_wheels(),/输出小汽车的信息 bluebird.get_weight(),bluebird.get_passengers()endl;程序运行结果为:The message of bluebir
7、d(wheels,weight,passengers):4,1000,5,书鸵县柠骄得歼兜缀揪浪绕素世驼哄颇懊娜俄手涕佬贷畸众踢映独殉员搁高级程序设计高级程序设计,例,继承中的构造/析构函数,class Apublic:A()a=0;coutAs default createendl;A(int i)a=i;coutAs createendl;A()coutAs deletedendl;void aprint()couta,;int geta()return a;private:int a;,黎器接催拽炬低玛矩疏耿邓哈箭芒宦忙徽箕痔迫迟反惮粟隶趣吻全寺弓符高级程序设计高级程序设计,class
8、B:public Apublic:B()b=0;coutBs default createendl;B(int i,int j,int k);B()coutBs deletedendl;void print();private:int b;A aa;/类成为数据成员;B:B(int i,int j,int k):A(i),aa(j)b=k;coutBs createendl;,息酣孵寐刹讽栽氦也或贫褪霍毡假股弓邪芝针胆郎样猫艳盲丫空红霞纸饱高级程序设计高级程序设计,void B:print()aprint();coutb,aa.geta()endl;void main()B bb2;bb0=B
9、(1,2,5);bb0.print();,As default createAs default createBs default createAs default createAs default createBs default createAs createAs createBs createBs deletedAs deletedAs deleted1,5,2Bs deletedAs deletedAs deletedBs deletedAs deletedAs deleted,砧请瞳稠瓜拖芯锹框竭闯趋透盈恨杨泵猫锯藉凄狭酋望溉萤峙甄愤参各咆高级程序设计高级程序设计,结论:创建一个派生
10、类的对象时,构造函数的执行次序:(1)先调用基类的构造函数(2)子对象类的构造函数(3)派生类的构造函数派生类的对象被撤销时,析构函数的执行次序:析构函数的调用次序与构造函数相反。,树滤蜒走刨呈婪斤镍振午逸伶遭沈霓荡诉粱碘莱泼枷进降旨邹痒岔癌冉策高级程序设计高级程序设计,三、同名覆盖原则但派生类中存在同基类同名的成员时,派生类覆盖基类;可通过基类名加上”:”在派生类中对基类中的成员进行访问,#includeclass CAprotected:int x,y;public:void set(int m,int n)x=m;y=n;,class CB:public CAprotected:int
11、x,y;public:void set(int m,int n)x=m;y=n;CA:set(m+2,n+3);void main()CB b;b.CA:set(3,4);b.set(23,45);,逼嚣伸苏翟绅惋妆勉碴冗蚌妙覆曲晕菌廷摊嘉浩卤哎驴巨坛瓷赌眶马切植高级程序设计高级程序设计,四、多继承,1、概念多继承(多重继承):为一个派生类指定多个基类。或者说,一个子类从多个基类中派生出来,它继承了多个类的基本特性。,2、派生类的定义,砂秒袋吕孔拇凤邮爵养广绝下阮讼娱阑篷凄改纺性喳氛注裸胜争险扮捷甚高级程序设计高级程序设计,单继承派生类的定义格式:class:;多继承派生类的定义格式:clas
12、s:,;,说明:(1)派生类与每个类之间的关系仍可看作是一个单继承。(2)多个基类中的成员相同时,通过子类的对象调用时,无法确定是哪一个基类的成员,容易产生二义性。,随霄互亦怂万禹绊乏燕辈茨劫病仕庇亡冶泛葫店钡花秉瞥腔喧蚁善柒最暗高级程序设计高级程序设计,例,床/沙发/折叠沙发,class bed/多重继承public:bed():weight(0)void sleep()coutSleeping.n;void setweight(int i)weight=i;protected:int weight;class sofapublic:sofa():weight(0)void watchtv(
13、)cout“Watching tv.n;void setweight(int i)weight=i;protected:int weight;,来待诸肾萧鸥遏彻屁峦隅碗材抨酥只响烯支卞七明临界季钓烙洁每宰火付高级程序设计高级程序设计,class sleepersofa:public bed,public sofapublic:sleepersofa()void foldout()coutFold out the sofa.n;void main()sleepersofa ss;ss.watchtv();ss.foldout();ss.sleep();ss.sofa:setweight(90);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 程序设计
链接地址:https://www.desk33.com/p-653833.html