著名C++大师Herb Sutter向你展示40个最新的工程难题、编程问题和解决方案。所谓Style就是在开销和功能、优雅和可维护性、灵活性和过度设计之间求得平衡。本书帮助你在C++软件中使用Style进行设计、架构和编码,获得更好的健壮性和性能。本书是Herb备受欢迎的Exceptional三卷本的终结篇,也是C++ In-depth系列中的又一力作。
Preface
Generic Programming and the C++ Standard Library
1. Uses and Abuses of vector
2. The String Formatters of Manor Farm, Part 1: sprintf
3. The String Formatters of Manor Farm, Part 2:
Standard (or Blindingly Elegant) Alternatives
4. Standard Library Member Functions
5. Flavors of Genericity, Part 1: Covering the Basis [sic]
6. Flavors of Genericity, Part 2: Generic Enough?
7. Why Not Specialize Function Templates?
8. Befriending Templates
9. Export Restrictions, Part 1: Fundamentals
10. Export Restrictions, Part 2: Interactions, Usability Issues, and Guidelines
Exception Safety Issues and Techniques
11. Try and Catch Me
12. Exception Safety: Is It Worth It?
13. A Pragmatic Look at Exception Specifications
Class Design, Inheritance, and Polymorphism
14. Order, Order!
15. Uses and Abuses of Access Rights
16. (Mostly) Private
17. Encapsulation
18. Virtuality
19. Enforcing Rules for Derived Classes
Memory and Resource Management
20. Containers in Memorv,Part 1: Levels of Memory Management
21. Containers in Memory, Part 2: How Big Is It Really?
22. To new, Perchance to throw, Part 1: The Many Faces of new
23. To new, Perchance to throw, Part 2:
Pragmatic Issues in Memory Management
Optimization and Efficiency
24. Constant Optimization?
25. inline Redux
26. Data Formats and Efficiency, Part 1: When Compression Is the Name of the Game
27. Data Formats and Efficiency, Part 2: (Even Less) Bit-Twiddling
Traps, Pitfalls, and Puzzlers
28. Keywords That Aren't (or, Comments by Another Name)
29. Is It Initialization?
30. double or Nothing
31. Amok Code
32. Slight Typos? Graphic Language and Other Curiosities
33. Operators, Operators Everywhere
Style Case Studies
34. Index Tables
35. Generic Callbacks
36. Construction Unions
37. Monoliths "Unstrung," Part 1: A Look at std::string
38. Monoliths "Unstrung," Part 2: Refactoring std::string
39. Monoliths "Unstrung," Part 3: $td::$tring Diminishing
40. Monoliths "Unstrung," Part 4: std::string Redux
Bibliography
Index