C++ Primer中文版

[美] Stanley B. Lippman, Josee Lajoie

出版时间

2002-04-01

ISBN

9787508309897

评分

★★★★★
书籍介绍
这不是一本适合从头读到尾的书。多数读者的真实读法是:翻到第160页便合上,剩下的部分留给检索——它更像一本摊在桌面上的工具书或字典,而不是一场连贯的叙事。读者反复提及的,是它"厚"与"罗嗦"带来的阅读负担,以及中文译文中"不怎么通顺"的滞涩感;但与此同时,"非常实用、适合当手册"又是几乎一致的肯定。正因如此,它的价值不在"读完",而在"查用":泛型程序设计、模板、标准库容器的取舍准则(vector还是list)、友元与继承构造函数的细节,都是需要反复回查的硬知识。它适合两类人——把它当权威手册随时查阅的成熟开发者,以及愿意忍受冗长、逐条啃模板的初学者;不适合寻求"快速上手"或"轻松读懂"的读者。
作者简介
Stanley Lippman职业是提供关于C++和面向对象的训练、咨询、设计和指导。他在成为一名独立咨询顾问之前,曾经是迪士尼动画公司的首席软件设计师。当他在AT&T B ell实验室的时候,领导了cfront 3.0版本和2.1版本的编译器开发组他也是Bjarne Stroustrup领导的Bell实验室Foundation项目的成员之一,负责C++程序设计环境中的对象模型部分。Stan是本书所有三个版本的作者,他还撰写了许多关于C++的文章。目前他已受雇于微软公司,负责Visual C++项目。 Josee Lajoie是IBM加拿大实验室的C/C++编译器开发组的一名成员,也是ANSI/ISO C++标准委员会的核心语言工作组的主席。Josee是《C++ Report》杂志的专栏作家,目前正在滑铁卢大学的计算机图形实验室攻读硕士学位。 潘爱民,浙江海宁人,现任职于北京大学计算机科学技术研究所,副研究员,研究方向为网络与信息安全。自1994年至1999年,他一直从事计算机软件开发方面的工作。1998年到今,了利用业余时间著译了多部关于软件开发的著作,如《Visual C++技术内幕》(第四版),《COM原理与应用》、《COM本质论》、《深入解析ATL》等。1999年他还是《微电脑世界》杂志社的合作专家,撰写了大量深入权威的技术文章。1991年他在南开大学数学系获学士学位,1994年在清华大学自动化系获硕士学位。
AI导读
核心看点
  • C++权威经典教程,系统讲解标准C++特性与用法。
  • 结合真实程序案例,涵盖泛型、面向对象及模板设计。
  • 提供丰富的习惯用法与效率指导,适合深入理解语言。
读者共识
  • 被誉为C++圣经,是学习C++不可或缺的经典之作。
  • 内容详实但篇幅巨大,常被当作字典或手册使用。
  • 虽被吐槽罗嗦难懂,但公认其专业性与实用性极高。
精彩摘录
  • "If we have not previously told the compiler that the friend is a template, then the compiler will infer that the friend is an ordinary nontemplate class or function. 如果没有事先告诉编译器该友元是一个模板,则编译器将认为该友元是一个普通非模板类或非模板函数。"
  • "A friend declaration introduces the named class or nonmember function into the surrounding scope. Moreover, a friend function may be defined inside the class. The scope of the function is exported to the scope enclosing the class definition. 友元声明将已命名的类或非成员函数引入到外围作用域中。此外,友元函数可以在类的内部定义,该函数的作用域扩展到包围该类定"
  • "to make a member function a friend, the class containing that member must have been defined. 必须先定义包含成员函数的类,才能将成员函数设为友元。 When we want to restrict friendship to a specific instantiation, then the class or function must have been declared before it can be used in a friend declaration 想要限制对特定实例化的友元关系时,必"
  • "可以将严格弱序看作"小于等于" •两个关键字不能同时"小于等于"对方;如果k1"小于等于"k2, 那么 k2 决不能"小于等于" k1 ."
  • "We can think of a strict weak ordering as “less than” • Two keys cannot both be “less than” each other; if k1 is “less than” k2, then k2 must never be “less than” k1."
  • "Unlike using declarations for ordinary members, a constructor using declaration does not change access level of the inherited constructor(s). More over, a using declaration can't specify explicit or constexpr, the inherited constructor has the same property as the corresponding base constructor."
  • "An inherited constructor is not treated as a user-defined constructor. Therefore, a class that contains only inherited constructors will have a synthesized default constructor."
  • "4.3.2. 新旧代码的兼容 许多 C++ 程序在有标准类之前就已经存在了,因此既没有使用标准库类型 string 也没有使用 vector。而且,许多 C++ 程序为了兼容现存的 C 程序,也 不能使用 C++ 标准库。因此,现代的 C++ 程序经常必须兼容使用数组和/或 C 风格字符串的代码,标准库提供了使兼容界面更容易管理的手段。 194 混合使用标准库类 string 和 C 风格字符串 正如第 3.2.1 节中显示的,可用字符串字面值初始化 string 类对象: string st3("Hello World"); // st3 holds Hello World 通常,由于 C "
下载
收藏