《深度探索C对象模型》读书笔记:第五章构造-结构-拷贝语意学.docVIP

《深度探索C对象模型》读书笔记:第五章构造-结构-拷贝语意学.doc

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《深度探索C对象模型》读书笔记:第五章构造-结构-拷贝语意学

《深度探索C++对象模型》读书笔记:第5章 构造、结构、拷贝 语意学 64位平台C/C++开发注意事项 在/en/l/上例出了28个在64位平台上使用C/C++开发的注意事项,对于进入64位时代的程序员应该去看看这28个事项,这些英文读物对于有C/C++功底的朋友读起来应该并不难,我估计大约20-30分钟可以精读完一篇(或者更快),下面是这28个注意事项的列表。相信对大家一点有帮助。Bhui2014  HYPERLINK  Lesson 01. What 64-bit systems are. Lesson 02. S 本章主要讲述了一下内容:虚函数、纯虚函数的声明,无继承情况下的对象构造,继承体系下的对象构造,对象复制语意学,对象的功能,解构语意学。虚函数、纯虚函数的声明部分对应P191~P195之间的内容,主要讲述了如下内容:ClassAbstract_base { public: virtual~Abstract_base()=0; virtualvoidinterface()const=0; virtualconstchar*mumble()const { return_mumble; } protected: char*_mumble; };1. 本类缺少一个构造函数。为什么本类需要一个构造函数呢?因为需要初始化_mumble。 2. 一个纯虚函数可以有实现。虽然是可以但是本人认为在本例中给出一个纯虚函数的实现来是很令人费解的;因为纯虚函数一般是在基类声明接口用的,只有子类才需要实现这个函数。3. 什么样的函数需要是虚的呢?结合书中所述和本人自己的理解,只有一个函数可能因为类型(注意是类型而是类,类型与类的区别《设计模式》一书第一章有说明)不同而有不同实现是需要声明成虚拟的。4. 什么函数需要是纯虚函数呢?在接口中声明的函数,做为基类的类中的可能因为类型不同而有不同实现的函数。5. 关于虚函数中的const问题。我的意见和数中一致,只有在确定需要const的时候再加。6. 关于析构造函数的虚拟性。强烈反对把一个类的构造函数声明称纯虚的;如果一个类可能做为基类且动态创建那么就需要把析构函数声明称虚拟的;其他情况基本不需要把析构函数声明成虚拟的。经过前面的讨论之后作者给出了Abstract_base的新定义。除了作者所说的一些问题外我感觉该类还需要一个拷贝构造函数。为什么呢?因为该类有一个char *成员,很可能该成员会指向一个动态分配的??符数组,为了在上述情况下的不至于发生浅拷贝的现象,所以需要一个拷贝构造函数。无继承情况下的对象构造主要讲述了如下内容:如果没有提供理论上我们可以认为编译器会给我们提供构造函数,析构函数,拷贝构造,拷贝赋值;但是在很多情况下这些函数是无用的;所以编译器要么没有生成要么没有调用这些函数。另外我们需要记住在C++中全局对象会被初始化,可能通过编译器或者我们提供的构造函数(int,char等内置类型也会被初始化)。在本书P199中Point locall = {1.0, 1.0, 1.0} 这种初始化方式本人还是在这本书中第一次见到。P204页最下面部分的foobar函数声明有误,此时该函数返回值应该为void;此错误同P205页中间部分的foobar函数声明错误。继承体系下的对象构造主要讲述了如下内容:本小节讲了不少也很复杂,但是我觉得对于一个以应用为目的的程序员来说没有太大的必要搞得很清楚。只需要记住P206到P207之间对象在构造时的顺序就可以了。对象复制语意学主要讲述了如下内容:我们经常碰到的情况可以根据P220页所说的情况,来处理。什么时候需要我们提供一个拷贝赋值操作呢?本人觉得在想避免浅拷贝或者想提高效率的情况下提供一个copy assignment函数。其他情况基本上不需要提供该函数。对象的功能主要讲述了如下内容:对象构造和拷贝的效率问题,作为以应用为主的程序员不需要太注重这个问题。解构语意学主要讲述了如下内容:析构函数的作用,析构函数的调用顺序等内容。个人认为阅读本节只限于了解以上所述的内容即可。另外记住一条:如果某对象掌握有资源(动态申请的内存等),那么很多情况下该类需要一个析构函数来释放资源。来自: 本章主要讲述了一下内容:虚函数、纯虚函数的声明,无继承情况下的对象构造,继承体系下的对象构造,对象复制语意学,对象的功能,解构语意学。虚函数、纯虚函数的声明部分对应P191~P195之间的内容,主要讲述了如下内容:ClassAbstract_base { public: virtual~Abstract_base()=0; virtualvoidinterface()const=0; virtualconstchar*mumble()const { retur

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档