第一图书网

C++Primer(英文版)(第4版)

Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 人民邮电出版社
出版时间:

2006-11  

出版社:

人民邮电出版社  

作者:

Stanley B.Lippman,Josée LaJoie,Barbara E.Moo  

页数:

885  

Tag标签:

无  

内容概要

  “在遇到无法解决的问题时,我总会求助于C++ Primer一书。”——Bruce·Eckel,“编程思想”系列图书作者  “众所周知, C++ Primer是学习C++最理想的参考书之一,适用于各种水平的C++程序员。第4版不但保持了这种传统,而且有了很大改善。”——STEVE?VINOSKI,IONA科技公司首席工程师,CORBA与C++权威。  “《C++Primer(英文版)(第4版)》真正揭示了C++这一大型、复杂语言的本质。”——JUSTIN?SHAW,Aerospace公司电子程序部技术处资深成员  “(本书)不但使初学者迅速入门,而且是用优秀的编程实践引导他们入门。”——NEVIN?LIBER,资深工程师(自1988年起一直是C++开发者)  C++诞生20年后,因其强大的功能、广泛的适用性和极高的效率,已经成为无庸置疑的主流编程语言。但是C++语言也不得不面对这样的挑战:其博大精深不仅令初学者望而生畏,而且即使是许多富于经验的老手也很难全面掌握,更有不少C++程序员一直背负着C语言的历史包袱,常常落入各种微妙难解的安全和性能陷阱。如何使现代C++理念深入人心,使C++更加容易学习和使用,已经成为众所瞩目的焦点。  《C++Primer(英文版)(第4版)》是久负盛名的C++经典教程,已经帮助全球无数程序员学会了C++。这一全新版本进行了彻底的修订,章节内容和编排都经过了重新组织,既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。《C++Primer》(英文版)(第4版)(图灵原版计算机科学系列)是C++大师Stan?B?Lippman丰富的实践经验和C++标准委员会原负责人Josée·Lajoie对C++标准深入理解的完美结合。新版更加入了C++先驱Barbara?E?Moo在C++教学方面的真知灼见。对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书不仅依然是初学者的最佳C++指南,而且即使对于中高级程序员,本书也是不可或缺的参考书。

作者简介

  Stanley B. Lippman,目前是微软公司 Visual C++ 团队的架构师。他从1984年开始在贝尔实验室与C++的设计者Bjarne Stroustrup一起从事C++的设计与开发。又先后在迪士尼和梦工厂从事动画制作,还担任过JPL的高级顾问。他还著有Inside the C++ Object Model。

书籍目录

Chapter 1 Getting Started1.1 Writing a Simple C++Program1.1.1 Compiling and Executing Our Program1.2 A First Lookat Input/Output1.2.1 Standard Input and Output Objects1.2.2 A Program that Uses the IO Library1.3 A Word About Comments1.4 Control Structures1.4.1 The while Statement1.4.2 The for Statement1.4.3 The if Statement1.4.4 Reading an Unknown Number of Inputs1.5 Introducing Classes1.5.1 The Sales_item Class1.5.2 A First Looka tMember Functions1.6 The C++ProgramChapter SummaryDefined TermsPart I The BasicsChapter 2 Variables and Basic Types2.1 Primitive Built-in Types2.1.1 Integral Types2.1.2 Floating-Point Types2.2 Literal Constants2.3 Variables2.3.1 What Is a Variable?2.3.2 The Name of a Variable2.3.3 Defining Objects2.3.4 Variable Initialization Rules2.3.5 Declarations and Definitions2.3.6 Scope of a Name2.3.7 Define Variables Where They Are Used2.4 const Qualifier2.5 References2.6 Typedef Names2.7 Enumerations2.8 Class Types2.9 Writing Our Own Header Files2.9.1 Designing Our Own Headers2.9.2 A Brief Introduction to the PreprocessorChapter SummaryDefined TermsChapter 3 Library Types3.1 Namespace using Declarations3.2 Library stringType3.2.1 Defining and Initializing strings3.2.2 Reading and Writing strings3.2.3 Operations on strings3.2.4 Dealing with the Characters of a string3.3 Library vector Type3.3.1 Defining and Initializing vectors.3.3.2 Operations on vectors3.4 Introducing Iterators3.4.1 Iterator Arithmetic3.5 Library bitset Type3.5.1 Defining and Initializing bitsets3.5.2 Operations on bitsetsChapter SummaryDefined TermsChapter 4 Arrays and Pointers4.1 Arrays4.1.1 Defining and Initializing Arrays4.1.2 Operations on Arrays4.2 Introducing Pointers4.2.1 What Is aPointer?4.2.2 Defining and Initializing Pointers4.2.3 Operationson Pointers4.2.4 Using Pointers to Access Array Elements4.2.5 Pointers and the const Qualifier4.3 C-Style Character Strings4.3.1 Dynamically Allocating Arrays4.3.2 Interfacing to Older Code4.4 Multidimensioned Arrays4.4.1 Pointers and Multidimensioned ArraysChapter SummaryDefined TermsChapter 5 Expressions5.1 Arithmetic Operators5.2 Relational and Logical Operators5.3 The Bitwise Operators5.3.1 Using bitset Objectsor Integral Values5.3.2 Using the Shift Operators for IO5.4 Assignment Operators5.4.1 Assignment Is Right Associative5.4.2 Assignment Has Low Precedence5.4.3 Compound Assignment Operators5.5 Increment and Decrement Operators5.6 The Arrow Operator5.7 The Conditional Operator5.8 The size of Operator5.9 Comma Operator5.10 Evaluating Compound Expressions5.10.1 Precedence5.10.2 Associativity5.10.3 Order of Evaluation5.11 The new and delete Expressions5.12 Type Conversions5.12.1 When Implicit Type Conversions Occur5.12.2 The Arithmetic Conversions5.12.3 Other Implicit Conversions5.12.4 Explicit Conversions5.12.5 When Casts Might Be Useful5.12.6 Named Casts5.12.7 Old-StyleCastsChapter SummaryDefined TermsChapter 6 Statements6.1 Simple Statements6.2 Declaration Statements6.3 Compound Statements (Blocks)6.4 Statement Scope6.5 The if Statement6.5.1 The if Statement else Branch6.6 The switch Statement6.6.1 Using a switch6.6.2 Control Flow within a switch6.6.3 The default Label6.6.4 switch Expression and CaseLabels6.6.5 Variable Definitions inside a switch6.7 The while Statement6.8 The forLoop Statement6.8.1 Omitting Parts of the for Header6.8.2 Multiple Definitions in the for Header6.9 The do while Statement6.10 The break Statement6.11 The continue Statement6.12 The goto Statement6.13 try Blocks and Exception Handling6.13.1 A throw Expression6.13.2 The try Block6.13.3 Standard Exceptions6.14 Using the Preprocessor for DebuggingChapter SummaryDefined TermsChapter 7 FunctionsChapter 8 The IO LibraryPart II Containers and AlgorithmsChapter 9 Sequential ContainersChapter 10 Associative ContainersChapter 11 Generic AlgorithmsPart III Classes and Data AbstractionChapter 12 ClassesChapter 13 Copy ControlChapter 14 Overloaded Operations and ConversionsPart Ⅳ Object-Oriented and Generic ProgrammingChapter 15 Object-Oriented ProgrammingChapter 16 Templates and Generic ProgrammingPart Ⅴ Advanced TopicsChapter 17 Tools for Large ProgramsChapter 18 Specialized Tools and TechniquesAppendixA The LibraryIndex


图书封面

图书标签Tags

广告

下载页面


C++Primer(英文版)(第4版) PDF格式下载



书得质量很好,内容很丰富


印刷,质量还好,价格也适中,满意。


看看原汁原味的


经典不需要解释


  说起对编程的喜爱还得从C++开始……
  还记得大一学习C++时的激情:看书,理解,敲代码;看书,理解,敲代码……可能我已经数不清当时死了多少脑细胞,呵呵
  
  不过,大一学c++时,学院统一使用的是清华出版社的一本书,感觉不咋滴,所以当时学的云里雾里——但,最后,在网上一查,看见许多C++前辈都力荐《C++ Primer》这本书,所以又决定品读这本大师级的书籍,虽然很厚,但还算是读完了
  
  虽然,不敢说自己对C++的认识有多前卫,但是,我可以诚恳地讲:这本书让我对C++的确增长了不少见识——例如:常成员函数、typeid(t).name()查看t的类型名称、运算符重载竟然可以那么强大==。总之,这本书对于C++的讲解算是非常全面,可以让你从入门级别升级到中级或者更高的级别
  
  因此,如果你是喜欢C++的初学者,且向真正了解编程之道,那么请学习C++,细细品味这本书吧,它会给你带来意想不到的收获和进步……


  还没看完
  这书还是针对有一定基础的人看的
  很多内容比较糙么 没有想象的好 讲的不细
   不过还是比较实用的 坚持看完好了
  初学的还是推荐C++Primer Plus
  一些国内的c++语言教程
  


  这本书写的不错,但对于C++本身就不敢苟同了。与其说C++这门语言是设计出来的,不如说是“用”出来的。
  
  C语言用着用着觉得抽象性不够,那就加入面向对象的东西吧;用着用着怎么突然出现二义性了,向左还是向右呢?不如就规定统一向左吧!再用着用着发现好像漏了什么东西,嗯,需要引入个“友元”的概念。然后为了语言整体不至于太混乱,看上去像那么回事,就组织一批学者对其进行“重构”,不断修正和提出所谓的标准,使其能自圆其说。
  
  C++设计中反复在强调要站在“用户”的角度考虑,无论是类用户,而是最终用户,都要尽量做到“隐藏实现,提供接口”。具有讽刺意味的是,这一点它连自己都没有做到,甚至可以充当反面教材。对于读这本书的,C++这门语言的“用户”,编译器实现的细节贯穿全书。
  
  不过也罢,毕竟当一个人脑子里装着要兼容C这么一个大负担时,能期望他作出多么优秀的设计呢?


  作为入门书所有知识点几乎还都覆盖到了, 但是略显一扫而过, 不够细致. 相比之下另一本入门书(Head First C)做得更好, (写作手法)从原理到用法讲解的透彻清晰. 所以此书作为入门书其实是略显"谭浩强"类.
  
  但是作为参考书, 还是挺好的. 昔日还可以随时翻翻, 但在现在各种online msdn, man page下, 多少有些尴尬了. 4星给纸质书时代的经典.


  这是一本经典,但是在我多次读过之后,感觉这本书更应该是一本给已经有一些c或者c++经验的人的工具书,而不适合初学者。
  本书的前面部分,也就是基础语言和容器、泛型算法部分相当的详细,对于各种细节做到了极致,初学者可能会受益匪浅。
  但是本书一旦到了类和面向对象编程部分之后,对于初学者、尤其是没有任何编程经验的人来说,就全靠个人领悟与天赋了,但是对于有些基础的人来说,则可以从中学到很多速成类c++教材的知识。
  这是一本经典,但是初学者慎读,最好能和其他的书比较着读。


   这是非常适合初学者的一本书,学习C++之前就知道这本书堪称是C++圣经,读了之后发现真的是名不虚传。
   我以前看过的一些国内的C++教科书,都是使用基于字符数组指针和动态内存管理的程序设计技术来讲的,感觉经常会陷入到一些程序细节中,没看几章就会觉得有很强的挫败感而导致不想继续了,但是由于英文不好,一直对看这本书没有太大信心,经过很多人的推荐,最终还是鼓起勇气买了一本来看,很庆幸没有自己想象中的那么难。
   我觉得这本书的特别之处在于两点,一是引入标准库,让学习编写的过程变得简单很多,而且可以顺便学习一下全新的C++11标准;二是这本书在边栏设置了一些图标,用来对基础内容(核心)、高级主题(可跳过或扫一眼)和复杂概念(仔细彻底理解)加以区别,个人感觉可以引导不同程度的人更有效率的读这本书。
   要说缺点的话,个人觉得最大缺点还是它是英文版,读起来很慢,英文不好是个硬伤,不过听说7月份将要出第五版的中文版了,很是期待~~


   这本书我详详细细的读过两边,每次读的收获都不一样,第一遍读的时候没读完,最后一本部分没读下去,毕竟一口气看完还是需要很大的勇气的,后来总是感觉有点遗憾,就每天下班的时候读一下,用了不到一周的时间详细的读了一遍,个人感觉如果有时间可以详细的读一遍的(时间都是挤出来的),不必都记住,只需要在用到相关知识的时候能到对应的地方找到参考的知识点就可以了,这本书相比C++程序设计语言还是容易理解下,还是建议读一下这本书!


  
  
  我在网上看到好多人说这个书不适合初学者,而我就是个初学者,我感觉我们不能完全靠书,书只是个目录和简要的说明,告诉你有这么多知识点,好的书在章节目录后还有小章节目录,好的初学者的书就是这样的小章节列的很全面
  
  再者这个书可能有些东西初学者可能不适应,以后工作必须要有自学的能力,这个书好多帮你理解,但是没有完整的代码例子,可能官方有代码,但是在看书的时候却没有完整代码帮你理解,你可以暂时看不懂,但是你却可以上网查找相关知识点来参考其他有经验的程序员的帖子来帮助你理解这个知识点,然后再来理解书上说明可能就清楚了,所以你要利用很好的泛滥的网络资源,不能依赖书把每个知识点都讲到,再着一本书就是一个人的讲话方式,如果你不习惯,但是你完全可以利用网络资源来倾听另一种你习惯的倾听方式,而且一个多年的程序员也不一定能很全面掌握,重在实践。
  
  我推荐你学习c++把这本书作为入门,也练练你的耐心,这些都是以后你工作中需要的基本素质。
  
  我学习的经历:http://blog.csdn.net/jianguo_liao19840726/article/category/1214731
  
  


  首先很厚 900 多页,包含交叉索引,
  原版的书纸的质量不用说了。
  
  基本覆盖了 0x11的内容, 风格例子都没有太大变化,加入了一个图标机制,难以理解的部分都加了图片,对于初学者可以略过,对于有经验的可以着重理解。随书还附赠了45天免费的在线电子版。safari在线书店。
  
  


  第五版出来了,已经在amazon下单,c++11的东西是这次更新的主题
  8月6号就出来,昨天去查发现已经出了一段时间了,很不错
  静待到货
  BTW:20英镑的价格确实也很给力,比预定的价格还低,看来等等还是划算的 这本书从来都是给有基础的人看得,完全没基础的还是找点别的吧


  这本书的思路往复跳跃,作者尤其喜欢吹牛逼,至于“久负盛名”的原因,见标题。
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁
  字数补丁


  书的内容质量不用我再多说了,经典中的经典。
  我只从阅读的方面谈谈自己的看法,经过中英对比以后,发现译者们只是将书的内容原原本本的翻译成了中文,却没在中文阅读的习惯上多加雕琢,看英文版的感觉挺流畅,行云流水,但再看翻译后的,总显不足,有点水土不符。本身C++就有难度,此书又是细节较多,翻译再有问题,这本身就给读者增加了无形的障碍。总体感觉,不如侯捷老师翻译的水平高。
  
  建议中英比较着来看,有能力的就看原版的吧。


  这本书有很多typos,让人抓狂!!!!!!!!
  
  下面好像是官方的勘误表,好久没更新了,只纠正了部分错误
  http://ptgmedia.pearsoncmg.com/images/9780201721485/Errata/Lippman_0201721481_Errata.html
  
  这个是某网友找到的错误
  http://wwliu.is-programmer.com/posts/22784
  
  希望大家能把自己找到的错误都列出来...


  这是本非常经典的C++书籍,系统全面地介绍了C++语言。本书有一千多页,可以看成是学习C++的百科全书。市面上没有哪本其他书籍比本书论述得更广泛了,几乎所有的C++知识点本书都有论述而且写得还不错。因为这点,这本书值得每一位C++程序员拥有。
  
  我是通过两本书籍来学习C++的,一本是本书,还有一本是《Thinking in C++》卷1。与TIC相比,本书胜内容的广度与深度;TIC胜在易读性与OOP编程思想。这两本书都写得很不错!
  
  本书不应是你学习C++的第一本书籍(推荐TIC卷1),因为本书常用程序片段、大程序来讲解C++,而不是通过短小而完整的程序来实例演示的。我想初学者还是喜欢能实际动手,编写、运行能看到结果小程序吧。但如果你想完整系统地学习一遍C++的话,本书仍然不可错过。


  很不适合初学者的primer;
  我认为很不适合初学者的primer,即使他的大师写的
  很早就陷入语法和细节,让初学者陷入无尽的要点;
  现在看了很多书后,想来,自己也走了好过弯路;
  
  
  
  
  
  
  
  
  
  


nice 正在看这本书呢。好多问题不太会。


P215 关于常量引用的讲解
下面给出了一个不好的例子,并给出解决方案
“如果实在不能修改find_char 就在is_sentence内部定义一个string类型的变量,令其未s的副本,然后把这个string对象传递给find_char”
这个解决方案没太看明白,定义一个什么类型的string变量呢 如果是const string,那岂不是还是不能赋值给find_char,如果是非const string,那上层传递过来的const string 又如何能赋值给这个副本呢?


上面写错页码了 是P192页。


我手里只有英文版的,页码不太对的上。你所提到地方是6.2.3最后那一段话吧?如下:
The right way to fix this problem is to fix the parameter in find_char. If it’s not possible to change find_char, then define a local string copy of s inside is_sentence and pass that string to find_char.
这里【针对那个不好的设计】提出了两个解决方案:
其一,把find_char的第一个parameter修改成(const string& s)。
其二,如果第一个方案无法实现的话,就在is_sentence函数里定义一个local的s的copy,再把这个copy传给find_char。
以上二方案是针对那个bad design的,也就是:
string::size_type
find_char( /* no const */ string &s, char c, string::size_type &occurs);


方案2的代码应为:
bool is_sentence(const string &s)
{
string::size_type ctr = 0;
string temp = s; //NOTE HERE
return find_char(temp, '.', ctr) == s.size() - 1 && ctr == 1;
}


回到你的问题:
“这个解决方案没太看明白,定义一个什么类型的string变量呢 如果是const string,那岂不是还是不能赋值给find_char,如果是非const string,那上层传递过来的const string 又如何能赋值给这个副本呢?”
定义一个什么类型的string变量呢 -- nonconst string对象,如上述代码;
那岂不是还是不能赋值给find_char -- 可以。该方案针对的是那个bad design,也就是使用nonconst的find_char,如上述。
如果是非const string,那上层传递过来的const string 又如何能赋值给这个副本呢?--可以,const的含义是“只读”.可以【用const 创建非const】。就是说可以用“只读的”创建“读写的”。事实上这是一种标准做法,也就是你提到的【副本】更详细的内容参看第七章和第十三章关于copy constructor的内容。
--缀一句,你提到的问题十分重要,是编程的基础思想,在c和其他语言里也有体现,最好能写代码体会一下。


刚才试了下,果然能编过
明白了,方案2 中间插入了副本,这个副本既不是引用也不是指针 所以不存在const能不能赋值的约束关系。
多谢。 留个邮箱吧, 有问题继续喝你交流。


才看到你后面的回复。 我是把指针和引用的赋值 和 变量的直接赋值 搞混淆了。
先上班去了。thx : )


moophy@foxmail.com
这个还能对付,太难的就不行了。。


传个答案吧。 参考下。


已发送,查收。
compiler弄好了吗?这些代码多数都需要C++11的支持才能compile。。


进度是15.22,基本都有comment,发现bug务必告诉我一下。


最近太忙了
回来都凌晨了。。
争取早日跟上你的进度。
编译器摆弄了下Mingw 没摆弄明白。
准备有空装个虚拟机跑ubuntu了。


哈哈,我也在用ubuntu。 虚拟机不太靠谱,各种莫名其妙的问题。空间够的话,直接给ubuntu装个分区好了,稳定的多,双系统的启动也很方便。然后,ubuntu自带的gcc版本也不够,有些c++11的特性有bug,要手动升级到4.8。


ufo22332003@gmail.com,求答案


@ptmagic
已发。
编译的时候注意C++11 的flag。
发现bug,或其它问题,告诉我一下。


没有问题哈哈@戳戳


xiekun605746@163.com 感谢楼主


@steve evan
已发。
编译的时候注意C++11 的flag。
发现bug,或其它问题,告诉我一下。


额,这个世界上任何事物不都是一直在进行着扬弃的过程么?C++ 当然也不例外。


纳尼?7月份出新版,我才刚买的书。。。。我去,英文看起来好慢。。。


哎...又是一个不知情白扔钱的孩子,能退就退了吧,新版还有不到一个月就出了,有C++11标准,很权威,老版基本没啥用了~


支持你!最近想入门,看到你的话有信心了。


我先抛砖引玉哈
On page 324, in table 9.8, there is a typo with the description of c.resize(n). “ If N < c.size(), the excess elements are discarded.” should be changed into “ If n< c.size(), the excess elements are discarded.”


On page 353, in the section of DEFINED TERMS, the "ff" in the last line of the description of "begin" should be "if".


On page 361, in the section of 10.3.2 Types Defined by map, a period mark is missing at the end of the first sentence.


On page 365, the second line of the first paragraph, map<string,int>::value_type(anna,1) , should be
map<string,int>::value_type("Anna",1)


楼主你好,我是本科一枚啊,非计算机专业,但我灰常喜欢C++,目前正在看《C++ Primer 4th》。如果我把C++理论知识学好了,但我没有开发经验,毕业时能找到一个相对来说还可以的IT工作吗?我以后打算从事这方面的工作,希望楼主过来人指点迷津啊,多谢!


如果你打算以后从事软件行业,在校时就可以去一些软件公司实习。


相关图书