《c++ primer》读书笔记8

原创 2004年07月15日 14:16:00

大笑微笑生气吐舌头吐舌头吐舌头吐舌头吐舌头吐舌头吐舌头吐舌头吐舌头吐舌头吐舌头生气微笑大笑


偷笑我爱北京天安门偷笑


偷笑天安门上太阳升偷笑


偷笑伟大领袖毛主席偷笑


偷笑指引我们向前进偷笑

偷笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑大笑偷笑

<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">笔记范围:</span><span lang="EN" style="FONT-SIZE: 15pt">2.5</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">节</span><span lang="EN" style="FONT-SIZE: 15pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp; </span><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 30pt"><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">随着这本书的深入,越来越发现自己对</span><span lang="EN" style="FONT-SIZE: 15pt">c++</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的理解是多么的浅薄,现在的我对于这些笔记真是诚惶诚恐,要知道这些自以为是的理解也许在今后的某个日子里信手翻阅,恐怕自己都会问。这些废话是那个笨蛋写的?简直一无是处,但是,我们的成熟正是来自这些一无是处的错误,作为初学者的我,希望在这里留下学习的思维旅程,不管自己的水平如何。这本笔记我还是会坚持,</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 30pt"><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之所以说上面那些感言,是因为自己觉得到了本节,作者将带领我们超越我们还有待深入理解的</span><span lang="EN" style="FONT-SIZE: 15pt">oo</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,关于泛型的讨论在各个技术社区随处可见,对于初学者来说,很少能看得懂这是在说什么?这无疑是个神秘的,令人恐惧的领域。然而,正如上节一样。跟着作者的思路我们不难理解泛型设计给程序员带来的好处,在读完作者行云流水般的讲述之后,回过头来看看自己真的理解了那些东西?结果是令人遗憾的,在读到第六章之前,我对这块总是疑问不断,主要如下:</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 30pt"><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">什么是泛型?只是模板吗?至少在本节范围内看来几乎是这么回事,为了提高代码的通用性,将数据类型参数化,让该代码的用户(本身也是编程者)决定类实例的数据类型,就这么简单?就从模板设计后对编译速度的影响,我们就可以肯定显然不是这么简单,以我们现在的水平无法真正回答这个问题,但是我们必须清楚的是:泛型设计不等于模板设计和简单的实例化类和函数。而模板一定是泛型设计的基础。</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 30pt"><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我的第二个问题是。泛型设计是完全一种高于</span><span lang="EN" style="FONT-SIZE: 15pt">oop</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的设计思想吗?我的感觉好像不是,从过程到基于对象到面向对象的努力方向几乎都是数据处理的相对独立性,考虑的是数据的相对安全,而我所理解的泛型设计(主要是模板的用法),几乎只是为了代码的通用性,当然更大可能是我对泛型的理解本身是个错误,可见在第一个问题没解决之前。这个问题无从谈起,但是对于这节内容来说,带着几个笨问题离开,总比自以为是的态度更有价值。</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 30pt"><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当然,对于本节的内容,上面的那些牛角尖的事情不是完全必要做的。我们要掌握的是模板最基本的用法,以及模板在实例化过程中的一些编译期的特点,总结要点如下。</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 71.25pt; TEXT-INDENT: -41.25pt; tab-stops: list 71.25pt; mso-list: l0 level1 lfo1"><span lang="EN" style="FONT-SIZE: 15pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模板是对数据类型的参数化,说得非专业点,就是拿数据类型作“变量”,只不过在使用时,这些“变量”的值是类型而不是数据。比如:</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 30pt"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>tenplate&lt;class xxx&gt; class A {…….};<o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 30pt"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>int main() {<o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 30pt"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>A&lt;int&gt;<span style="mso-spacerun: yes">&nbsp; </span>obj;<o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 30pt"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Return 1 ;<o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 30pt"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}<o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 71.95pt; TEXT-INDENT: -60pt; mso-char-indent-count: -4.0; mso-para-margin-left: 1.14gd"><span lang="EN" style="FONT-SIZE: 15pt"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="mso-spacerun: yes">&nbsp;</span></span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">上面的</span><span lang="EN" style="FONT-SIZE: 15pt">xxx</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">就是我所谓的“变量”,理论上可以是你喜欢的任何标识符(当然它得符合标识符的基本要求)。</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 71.25pt; TEXT-INDENT: -41.25pt; tab-stops: list 71.25pt; mso-list: l0 level1 lfo1"><span lang="EN" style="FONT-SIZE: 15pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模板实例化的过程书中讲的非常详细,我唯一能说的是,要仔细看,特别是对</span><span lang="EN" style="FONT-SIZE: 15pt">p42</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的内容(以第三版中文版为准)。</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 71.25pt; TEXT-INDENT: -41.25pt; tab-stops: list 71.25pt; mso-list: l0 level1 lfo1"><span lang="EN" style="FONT-SIZE: 15pt; mso-fareast-font-family: 'Times New Roman'"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对于</span><span lang="EN" style="FONT-SIZE: 15pt">oo</span><span style="FONT-SIZE: 15pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的模板支持,在理解前面的内容的基础上,这几乎没什么难度,值得看看的是作者的代码。恐怕在国内教材里没有什么地方能找到如此优雅,聪明的代码了。这本书中代码哪怕只是抄一遍,也是好处不可估量的。呵呵。</span><span lang="EN" style="FONT-SIZE: 15pt"><o:p></o:p></span></p>

C++ primer 读书笔记(8)

数组作为参数 数组
  • u013457107
  • u013457107
  • 2014年05月19日 21:51
  • 379

读书笔记-C++PrimerPlus-CPP流的总结

首先推荐一个C++参考文档组织的比较好的网站http://www.cplusplus.com/,最近见得好像比较到自己组织的比较好。本文也是根据这个网上的资料总结得到的。流的简介iostream是C+...
  • u011518120
  • u011518120
  • 2016年06月20日 02:33
  • 290

c++ Primer Plus(第六版)第七章习题,写代码之路

c++ Primer Plus(习题7.1) //用户输入啷个数,返回调和平均数 //其中一个为0结束程序 #include using namespace std; double t_averag...
  • Robot_x
  • Robot_x
  • 2017年01月20日 11:53
  • 337

《C++ Primer》真的适合入门吗?

客气地说,《C++ Primer》不适合大学C++基础课堂教学,也不适合初学者入门。 不客气地说,恐怕你们的大学老师也搞不定《C++ Primer》,更别说拿这本书教学生了。 更不客气地说...
  • qq_23291783
  • qq_23291783
  • 2015年12月22日 16:32
  • 949

如何学习C++ primer 第五版

作者:dawnmist 链接:http://www.zhihu.com/question/32087709/answer/54936403 来源:知乎 著作权归作者所有,转载请联系作者获得授权。...
  • w3071206219
  • w3071206219
  • 2016年08月22日 22:03
  • 847

C++Primer第五版——习题答案+详解(完整版)

C++Primer第五版——习题答案详解       看的也比较快,但是有很多东西确实用不上,所以很多都没有深入的探讨,但是知识点覆盖的很全面,每一道题涉及的知识点我都写上简单的解释了。      ...
  • misayaaaaa
  • misayaaaaa
  • 2016年12月21日 16:11
  • 42930

《C++ Primer》随附代码的使用方法

(Source: C++ Primer, Fifth Edition Visual Studio 2012 Code Distribution README ) Conditional Compil...
  • guohuaien
  • guohuaien
  • 2017年02月17日 13:49
  • 540

C++ Primer第四版(中文版) pdf下载

编辑推荐 《C++ Primer中文版(第4版)》对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使《C++ Primer中文版(第4版)》成为C++初学者的最佳指南;对于...
  • u012550652
  • u012550652
  • 2013年10月23日 23:08
  • 3275

如何利用《C++ Primer》学习C++?

《C++ Primer》作为久负盛名的C++经典教程,丰富的教学辅助内容、精心组织的编程示范,无论是初学者入门,或是中、高级程序员提升,都是不容置疑的首选。一本好书只有读过才有价值,然而《C++ Pr...
  • shiyanlou_chenshi
  • shiyanlou_chenshi
  • 2015年08月14日 16:00
  • 1221

C++ Primer(第五版) 学习笔记

C++语言基础: 1. C++11增加了long long 类型,表示最小尺寸为64的整数。 2. 浮点数运算使用double,通常运算速度更快。 3. 超过int容量时使用long long类型,无...
  • zxh2075
  • zxh2075
  • 2016年10月25日 15:56
  • 406
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《c++ primer》读书笔记8
举报原因:
原因补充:

(最多只允许输入30个字)