Effective C++

[美]Scott Meyers

出版时间

2006-07-01

ISBN

9787121029097

评分

★★★★★
书籍介绍
这不是一本教你C++语法入门的书,而是一本写给'已经踩过坑'的程序员的经验之书。全书以55条精炼准则,直击实际开发中最容易踩雷的细节:对象被按值传递时悄悄发生的'切割'、指针悬空指向栈内存的隐患、public变量与private封装的取舍。它不铺陈理论,而是用具体范例告诉你'为什么这样写更好'以及'那样写会怎样出事'。读者反馈里反复出现的'相见恨晚''案头反复阅读',恰说明它的价值不在通读一遍,而在需要时随手翻查。无论你是从C转战C++,还是从Java、C#归来,这本书都能帮你建立'C++式'的思维习惯,把语言的特性真正用起来。
作者简介
Scott Meyers是全世界最知名的C++软件开发专家之一。他是畅销书《Effective C++》系列(Effective C++,More Effective C++,Effective STL)的作者,又是创新产品《Effective C++ CD》的设计者和作者,也是Addison-Wesley的“Effective Software Development Series"顾问编辑,以及《Software Development》杂志咨询板成员。他也为若干新公司的技术咨询板提供服务。Meyers于1993年自Brown大学获得计算机博士学位。他的网址是www,aristeia.com.
AI导读
核心看点
  • 汇集55条准则,提供高效类与函数设计指导
  • 深入解析资源管理、模板运用及异常处理
  • 对比C++与其他语言差异,揭示底层机制
读者共识
  • C++程序员必读的经典圣经,地位不可动摇
  • 条款建议极具价值,除非必要否则勿违反
  • 需反复阅读方能豁然开朗,一遍绝对不够
精彩摘录
  • "1. “促进正确使用”的方法包括接口的一致性,以及与内置类型的行为兼容。 2. “阻止误用”的方法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。 3. 使用shared_ptr支持定制型删除器;也可以用来自动解除互斥锁。"
  • "Class的设计就是type的设计 。重载函数和操作符、控制内存的分配和归还、定义对象的初始化和总结。。。"
  • "前者更为高效,并可避免切割问题(slicing problem)。切割问题:当一个derived class对象以by value方式传递并被视为一个base class对象,base class的copy 构造函数会被调用,而derived class的那些特化性质全部被切割了。 该规则并不适用于内置类型,以及STL的迭代器和函数对象。对于它们而言,pass-by-value往往比较合适。"
  • "绝不要反悔pointer或reference指向一个local stack对象,或反悔一个heap-allocated对象,或反悔pointer或reference指向一个local static对象而有可能同时需要多个这样的对象。"
  • "一致性。这样客户就不需在打算访问class成员时迷惑地记住是否改用小括号。 如果有一个public变量,而我们最终取消了它,有可能会影响到所有使用到它的代码。而取消protect变量,只会影响到使用它的derived class。所以最好使用private封装变量。"
  • "这样可以增加封装性、包裹弹性和机能扩充性。"
  • "考虑接口为: const Rational operator*(const Rational& rhs) const; Rational oneFouth(1, 4); Rational result = oneFouth * 2; // 能编译通过 result = 2 * oneFouth; //不能编译通过"
  • "Rational result = oneFouth.operator*( 2 ); // 很好 result = 2.operator*(oneFouth); // 错误"
用户评论
不读此书非cpp程序员
scott meyers "effective三部曲"之一。老外的书有一个特点,扉页上总是写着感谢某某人。从没见过像这位大叔要感谢一条狗的,好冷。。。
C++必读经典。
好书,以后再读一次
相见恨晚
看过一遍,忘得差不多了,需要再翻翻。
从C++11开始,有一些已经不适用了,比如返回const,自己构造nocopyable之类的。
翻译略有滞涩,比如这句“如果有学生记得多一些,Dement 强调, 无非也只是记得1066 这个数字而己”;总体太棒了,像条款22,为什么要用private,见过得最周到清晰的解释
好书,C++ 必备,值得反复阅读。
当时学习C++学习的书籍,当时学习这种语言好傻啊,非常难懂,而且招人又少。
下载
收藏