C++中级培训教材5062.docx
《C++中级培训教材5062.docx》由会员分享,可在线阅读,更多相关《C++中级培训教材5062.docx(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 附件三:教材模板说明:一、为便于于保存和和管理,各各类培训训教材均均采用合合订本。二、教材结结构:各类培训教教材由教教材封面面、前言言、课程程目录、单单门课程程教材和和封底五五部分构构成。三、教材封封面:1、封面颜颜色:教教材封面面为彩色色,工作作基本常常识教材材为深蓝蓝色,技技术基础础知识教教材为草草绿色,管管理基础础知识教教材为浅浅蓝色,营营销基础础知识教教材为墨墨绿色。2、教材名名称:采采用“工作基基本常识识”“技术术基础知知识”“管理理基础知知识”“营销销基础知知识”,字体体为隶书书,黑体体,600号。3、其他标标识:员员工培训训中心编编辑采用用宋体、黑黑体、三三号,位位于教材材名称
2、下下面;华华为技术术有限公公司采用用宋体、黑黑体、小小二,位位于底端端;华为为标识位位于华为为技术有有限公司司和员工工培训中中心编辑辑之间;右上角角为保密密标识,楷楷体,黑黑体,四四号。四、教材封封底:教材封底包包括教材材名称、华华为技术术有限公公司员工工培训中中心和时时间、版版本号,位位于页面面的右下下角。五、前言:教材前言为为各类培培训的目目的、课课程门类类、特点点、主要要内容的的简介。六、课程目目录:为各门课程程排列顺顺序的目目录,统统一编排排页码,便便于学员员查找。七、单门课课程教材材:各单门课程程教材由由课程封封面、章章节目录录、章节节内容、学学习要求求、思考考题、参参考资料料和相关
3、关网站组组成。1、课程封封面:课程封面为为彩色,课课程名称称为隶书书、600号、黑黑体、黑黑色,左左上角为为课程编编码。2、章节目目录:为宋体、小小四、黑黑色3、章节内内容:(1)标题题:章节节目分别别以“第一章章、第二二章、第第三章”“1.1、1.22、1.33”和“(1)(2)(3)”来表示示。章为为宋体、小小二、黑黑体,节节为宋体体、四号号、黑体体,目为为宋体、小小四、黑黑体。(2)文字字:每四四个小时时的培训训课程,字字数控制制在10000002000000字之间间。教材材文字一一般为宋宋体、小小四、黑黑色,行行间距为为一行半半。(3)内容容:章节节内容要要有完整整的理论论体系,不不能
4、成为为授课胶胶片的翻翻版。4、学习要要求:每章标题下下面为本本章的学学习要求求,以明明确本章章要掌握握的要点点。文字字为楷体体、小四四。5、思考题题:每章最后要要有思考考题,以以便帮助助学员复复习、思思考。6、参考资资料和相相关网站站:有参考资料料和相关关网站的的要附在在课程后后面,以以便帮助助学员查查阅。内部资料,注注意保密密C+中级级培训教教程员工培训中中心编辑辑2005年年6月VV1.00华为技术有有限公司司前言C+语言言中级教教材讲授授C+语言的的运用技技术,包包括:类类、对象象之间的的关系、对对象的存存储与布布局、运运算符重重载、智智能指针针、仿函函数、泛泛型编程程,C+模式式设计基
5、基本思想想。NE00220099cV11.01业务与软件件C+语言项项目C+进阶阶目录第一章类、接接口771.1 HHanddle-Boddy与接接口、抽抽象接口口71.2 多多继承、与菱形缺陷、this跳转等131.3 CC+多多态的两两种多态态形式和和区别188第二章重载载182.1 函函数重载载 192.2 运算算符重载载200第三章模板板 2293.1 模模块函数数2293.2 模块块类313.3STTL标准准模板库库344附录:参考考资料 39 ISC基本知识附录:名词解释前言我们在C+基础础课程中中已经了了解了CC+的的一些基基本概念念,知道道了什么么是类什什么是对对象。也也了解了
6、了继承、封封装、多多态等CC+面面向对象象的基本本特征,本本课程主主要是更更进一步步探讨一一下C+一些些基本模模型的应应用,加加深对概概念的理理解,由由于课程程时间有有限,CC+,模模型和内内容又如如此之多多,对任任何一个个模型都都无法深深入进去去,所以以只能泛泛泛而谈谈。第一章类、接接口学习要求: 11、了解解类的继继承、封封装等概概念之间间的关系系2、了解什什么是接接口,什什么是虚虚函数,它它有什么么样的特特点。学学会使用用接口编编程的思思想本章节主要要介绍CC+中中的类、接接口。类类,包涵涵了一组组数据和和一组基基于数据据上的一一组方法法。它描描述了一一个对象象的属性性、状态态和行为为;
7、接口口,它只只是描述述了一个个对象的的简单的的行为。有关类的基基本概念念:Claass nammes Cllasss meembeersMembeer FFuncctioonsStatiic MMembber FunnctiionssUnionnsC+ BBit FieeldssNesteed CClasss DDecllaraatioonsType Nammes in Claass ScoopeMultiiplee Baase ClaasseesVirtuual FunnctiionssAbstrractt CllasssesContrrolllingg Acccesss tto CClas
8、ss MMembbersspprivvateeMemmberrspprottecttedMMembbersspubliicMeembeersAccesss SSpeccifiierss foor BBasee Cllassses,ppriaavtee,puubliic、pprottecttedFriennds CoonsttrucctorrsDesstruuctoorsConnverrsioon FFuncctioonsthee neew ooperratoor aand thee deelette ooperratoorCopyiing Coonsttrucctorr Fuuncttionn
9、sInterrfacce1.1 Handlle-BBodyy与接口口、抽象象接口 在C+中封封装的概概念是把把一个对对象的外外观接口口同实际际工作方方式(实实现)分分离开来来,但是是C+的封装装是不完完全的,编译器必须知道一个对象的所有部分的声明,以便创建和管理它。我们可以想象一种只需声明一个对象的公共接口部分的编程语言,而将私有的实现部分隐藏起来。C + +在编译期间要尽可能多地做静态类型检查。这意味着尽早捕获错误,也意味着程序具有更高的效率。然而这对私有的实现部分来说带来两个影响:一是即使程序员不能轻易地访问实现部分,但他可以看到它;二是造成一些不必要的重复编译。然而C+并没没有将这这个原
10、则则应用到到二进制制层次上上,这是是因为CC+的的类既是是描述了了一个接接口同时时也描述述了实现现的过程程,示例例如下:classs CCMySStriingprivvatee:consst iint m_ccch;char *m_pszz;publlic:CMyyStrringg(coonstt chhar *pssz);CMMySttrinng();intt Leengtth() coonstt;intt Inndexx(coonstt chhar *pssz) connst;CMySttirnng对外外过多的的暴露了了内存布布局实现现的细节节,这些些信息过过度的依依赖于这这些成员员变量的
11、的大小和和顺序,从从而导致致了客户户过度依依赖于可可执行代代码之间间的二进进制耦合合关系,这这样的接接口不利利于跨语语言跨平平台的软软件开发发和移植植。1.1.1 Handlle-BBodyy模式解决这个问问题的技技术有时时叫句柄柄类(hhanddle claassees)或或叫“Cheeshiire Catt” 11 。有有关实现现的任何何东西都都消失了了,只剩剩一个单单一的指指针“m_ppThiis”。该指指针指向向一个结结构,该该结构的的定义与与其所有有的成员员函数的的定义一一样出现现在实现现文件中中。这样样,只要要接口部部分不改改变,头头文件就就不需变变动。而而实现部部分可以以按需要要
12、任意更更动,完完成后只只要对实实现文件件进行重重新编译译,然后后再连接接到项目目中。这里有这这项技术术的简单单例子。头头文件中中只包含含公共的的接口和和一个简简单的没没有完全全指定的的类指针针。classs CMMySttrinngHaandlleprivvatee:classsCMyyStrringg;CMySttrinng *m_ppThiis;publlic:CMyyStrringgHanndlee (cconsst ccharr *ppsz); CCMySStriingHHanddle ();intt Leengtth() coonstt;intt Inndexx(coonstt ch
13、har *pssz) connst;;CMySStriingHHanddle: CCMySStriingHHanddle(connst chaar *pszz):m_ppThiis(nnew CMyyStrringg(pssz);CMySStriingHHanddle: CMyyStrringgHanndlee() deelette mm_pTThiss;int CMyyStrringgHanndlee:LLenggth()retturnn m_pThhis-Leengtth();int CMyyStrringgHanndlee:IIndeex(cconsst ccharr *ppsz) re
14、tturnn m_pThhis-Inndexx(pssz);这是所有有客户程程序员都都能看到到的。这这行classsCMMySttrinng;是一个没有有完全指指定的类类型说明明或类声声明(一一个类的的定义包包含类的的主体)。它它告诉编编译器,cheshire 是一个结构的名字,但没有提供有关该结构的任何东西。这对产生一个指向结构的指针来说已经足够了。但我们在提供一个结构的主体部分之前不能创建一个对象。在这种技术里,包含具体实现的结构主体被隐藏在实现文件中。在设计模模式中,这这就叫做做Hanndlee-Boody 模式,Handle-Body只含有一个实体指针,服务的数据成员永远被封闭在服务系
15、统中。Handlle-BBodyy模式如如下:classHandlem_pThisclass图1 Handlle-BBodyy模式(句句柄类做做为接口口)Handlle-BBodyy的布局局结构永永远不会会随着实实现类数数据成员员的加入入或者删删除或者者修改而而导致HHanddle-Boddy的修修改,即即Hanndlee-Boody协协议不依依赖于CC+实实现类的的任何细细节。这这就有效效的对用用户的编编译器隐隐藏了这这些斜街街,用户户在使用用对这项项技术时时候,HHanddle-Boddy 接接口成了了它唯一一的入口口。然而Hanndlee-Boody模模式也有有自己的的弱点:1、 接口类
16、必须须把每一一个方法法调用显显示的传传递给实实现类,这这在一个个只有一一个构造造和一个个析构的的类来说说显然不不构成负负担,但但是如果果一个庞庞大的类类库,它它有上百百上千个个方法时时候,光光是编写写这些方方法传递递就有可可能非常常冗长,这这也增加加了出错错的可能能性。2、 对于关注于于性能的的应用每每一个方方法都得得有两层层的函数数调用,嵌嵌套的开开销也不不理想3、 由于句柄的的存在依依然存在在编译连连接器兼兼容性问问题。接口和实现现分离的的Hanndlee-Boody。1.1.2 抽象接口使用了“接口与与实现的的分离”技术的的 Haandlle-BBodyy 解决决了编译译器/链链接器的的
17、大部分分问题,而而C+面向对对象编程程中的抽抽象接口口同样是是运用了了“接口与与实现分分离”的思想想,而采采用抽象象接口对对于解决决这类问问题是一一个极其其完美的的解决方方案。1、 抽象接口的的语言描描述:classs IMMySttrinngvirrtuaal iint Lenngthh() connst = 00; /这这表示是是一个纯纯虚函数数,具有有纯虚函函数的接接口virrtuaal iint Inddex(connst chaar *pszz) cconsst = 0;;2、 抽象接口的的内存结结构:classvtprclass:m1class:m2图2 抽象接口的的内存布布局3、
18、 抽象接口口的实现现代码:接口:classs IMMySttrinngviirtuual intt Leengtth() coonstt = 0; /这表示示是一个个纯虚函函数,具具有纯虚虚 /函数数的接口口viirtuual intt Inndexx(coonstt chhar *pssz) connst = 00;; 实现现:claass CMyyStrringg:puubliic IIMySStriingprivvatee:consst iint m_ccch;chaar *m_ppsz;publlic:CMyyStrringg(coonstt chhar *pssz);virrtuaa
19、l CMyyStrringg();intt Leengtth() coonstt;intt Inndexx(coonstt chhar *pssz) connst;从上面采采用抽象象接口的的实例来来看,抽抽象接口口解决了了Hanndlee-Boody所所遗留下下来的全全部缺陷陷。抽象接口的的一个典典型应用用:抽象工厂厂(AbbstrracttFacctrooy)图3 抽象工厂模模式1.2 多继承与菱菱形缺陷陷、thhis跳跳转等多重继承是是C+语言独独有的继继承方式式,其它它几乎所所有语言言都秉承承了单一一继承的的思想。这这是因为为多重继继承致命命的缺陷陷导致的的:1.2.1 菱形缺陷当继承基
20、类类时,在在派生类类中就获获得了基基类所有有的数据据成员副副本。假假如类BB 从AA1和AA2两个个类多重重继承而而来,这这样B类类就包含含A1、AA2类的的数据成成员副本本。考虑如果果A1、AA2都从从某基类类派生,该该基类称称为Baase,现现在继承承关系如如下:图4 菱形继承关关系我们C+语言来来描述这这种继承承关系:classs Baase ;classs A11 :ppubllic Basse ;classs A22 :ppubllic Basse ;classs B :puubliic AA1,ppubllic A2 ;那么A1、AA2都具具有Baase的的副本。这这样B就就包含了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 中级 培训教材 5062
限制150内