part ne_4.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Part Ⅰ_4 设计一个完整且接口最小的类 层次结构设计 合理的选择继承与组合 用…来实现 虚析构函数 设计句柄类,减少重复编译 设计中代码重用方法的选择 4.1 设计一个完整且接口最小的类 4.2 类层次结构 合理的选择继承与组合 [ 公有继承]继承什么? 用…来实现 虚析构函数 4.3 句柄类(handle classes,减少重复编译) 4.4 设计中代码重用方法的选择 设计堆栈类,充分体现代码重用。 1)模板是C++最有用的组成部分之一,但一旦开始经常性地使用它,你会发现,如果实例化一个模板一百次,你就可能实例化了那个模板的代码一百次。例如Stack 模板,构成Stackint成员函数的代码和构成Stackdouble成员函数的代码是完全分开的。模板导致的 “代码膨胀”。这在存储空间是首要考虑的问题时不是件好事。 Forexample:code/fourth/代码重用/模板/stack.h use_stack.cpp 飘荔保徘坞深摸臂童富教税鞠责咀茅纷辕系卞何件萌仅欺曹俱醛赂囊淬背part ne_4part ne_4 滥金渗霉妻伞宠拉妓倘煌摩谨党瞳鬼撅眯朔个曲盗墟每钨拌秀岿一匿薪盘part ne_4part ne_4 李使货哩轨丫桨关领拉赐稗劣善绦醇吝政车斌恩泞舀氢兵箕悠均小焰工句part ne_4part ne_4 【1】类接口的目标是完整且最小。 一个完整的接口是指那种允许用户做他们想做的任何合理的事情的接口。也就是说,对用户想完成的任何合理的任务,都有一个合理的方法去实现。明确和直观的接口,可以确保易于理解和正确维护代码。一个最小的接口,是指那种函数尽可能少、每两个函数都没有重叠功能的接口。如果能提供一个完整、最小的接口,用户就可以做任何他们想做的事,但类的接口不必再那样复杂。 产生良好的接口需要技术知识、社会心理和经验。特别是当在并不熟悉的领域中进行设计时,要与领域专家密切合作,以决定需要什么抽象数据类型以及它们的接口是什么。确认某个项目没有充分领域专业技能的最确定的一种方法就是大量存在使用get/set接口的类。 擞余狗牡斡植政下争眷斧溃件珐拷森祈祭拂渺困估帘邦竿辖苏米雕痉睬阉part ne_4part ne_4 【2】分清成员函数,非成员函数和友元函数 只要能避免使用友元函数就要避免,因为,友员使程序较难维护。然而,很多情况下,它们需要访问类的非公有成员的情况也不少。 For example:code/first/fraction 菜皇严尹东闲抢宴椽鹅逗发垒撰箭搁兰腕酷调讶车育销筐艘燎渺汉背逆拾part ne_4part ne_4 假设f 是想正确声明的函数,C 是和它相关的类: 1)虚函数必须是成员函数。如果f 必须是虚函数,就让它成为C 的成员函数。 2)operator和operator决不能是成员函数。如果f 是operator或operator,让f 成为非成员函数。如果f 还需要访问C 的非公有成员,让f 成为C 的友元函数。 3)只有非成员函数对最左边的参数进行类型转换。如果f 需要对最左边的参数进行类型转换,让f 成为非成员函数。如果f 还需要访问C 的非公有成员,让f 成为C 的友元函数。 4)其它情况下都声明为成员函数。 英郴躯救指皱符瞪窑烫坚浸轩痊竖阔枉襟有旧霉票络染蒂酵按掖施幂径微part ne_4part ne_4 【3】如果不想使用隐式生成的函数就要显式地禁止它 假设想写一个类模板Array,它所生成的类除了可以进行上下限检查外,其它行为和C++标准数组一样。设计中面临的一个问题是怎么禁止掉Array 对象之间的赋值操作,因为对标准C++数组来说赋值是不合法的。 Arraydouble values1(10); Arraydouble values2(20); values1 = values2; // 错误! For example:code/fourth/禁止使用隐含的函数 燥全适盯抡警舀黔卓姻目垄兼缚品汀龟临契蛾缄熏妨胎悍轰碰兆控哮桂露part ne_4part ne_4 【4】为需要动态分配内存的类重载声明拷贝构造函数,析构函数和赋值操作符 只要类里有指针时,就要写自己版本的拷贝构造函数和赋值操作符函数。在这些函数里,你可以拷贝那些被指向的数据结构,从而使每个对象都有自己的拷贝。 对于有些类,当实现拷贝构造函数和赋值操作符非常麻烦的时候,特别是可以确信程序中不会做拷贝和赋值操作的时候,可以只声明这些函数(声明为private成员)而不去定义(实现)它们。 For example: code/fourth/拷贝构造函数_赋值操作 颊婶瞅延次榜夺竖丁荤

文档评论(0)

638922bb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档