《PROFESSIONAL C++》
▸ PART I INTRODUCTION TO PROFESSIONAL C++
CHAPTER 1 A Crash Course in C++ and the Standard Library . . . . . . . . . 3
CHAPTER 2 Working with Strings and String Views . . . . . . . . . . . . . 57
CHAPTER 3 Coding with Style . . . . . . . . . . . . . . . . . . . . . . . 71
▸ PART II PROFESSIONAL C++ SOFTWARE DESIGN
CHAPTER 4 Designing Professional C++ Programs . . . . . . . . . . . . . . 95
CHAPTER 5 Designing with Objects . . . . . . . . . . . . . . . . . . . . . 123
CHAPTER 6 Designing for Reuse . . . . . . . . . . . . .. . . . . . . . . . 143
▸ PART III C++ CODING THE PROFESSIONAL WAY
CHAPTER 7 Memory Management . . . . . . . . . . . . . . . . . . . . . . . 163
CHAPTER 8 Gaining Proficiency with Classes and Objects . . . . . . . . . . 199
CHAPTER 9 Mastering Classes and Objects . . . . . . . . . .. . . . . . . . 231
CHAPTER 10 Discovering Inheritance Techniques . . . . . . . . . . . . . . 277
CHAPTER 11 C++ Quirks, Oddities, and Incidentals . . . . . . . . . . . . . 333
CHAPTER 12 Writing Generic Code with Templates . . . . . . . . . . . . . . 373
CHAPTER 13 Demystifying C++ I/O . . . . . . . . . . . . . . . . . . . . . 409
CHAPTER 14 Handling Errors . . . . . . . . . . . . . . . . . . . . . . . . 433
CHAPTER 15 Overloading C++ Operators . . . . . . . . . . . . . . . . . . . 473
CHAPTER 16 Overview of the C++ Standard Library . . . . . . . . . . . . . . . . . . . . . . 507
CHAPTER 17 Understanding Containers and Iterators . . . . . . . . . . . . . . . . . . . . 535
CHAPTER 18 Mastering Standard Library Algorithms . . . . . . . . . . . . . . . . . . . . . 607
CHAPTER 19 String Localization and Regular Expressions . . . . . . . . . . . . . . . . . 663
CHAPTER 20 Additional Library Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Continues
▸ PART IV MASTERING ADVANCED FEATURES OF C++
CHAPTER 21 Customizing and Extending the Standard Library . . . . . . . . . . . . . 727
CHAPTER 22 Advanced Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
CHAPTER 23 Multithreaded Programming with C++ . . . . . . . . . . . . . . . . . . . . . . 813
▸ PART V C++ SOFTWARE ENGINEERING
CHAPTER 24 Maximizing Software Engineering Methods . . . . . . . . . . . . . . . . . . 859
CHAPTER 25 Writing Efficient C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
CHAPTER 26 Becoming Adept at Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909
CHAPTER 27 Conquering Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933
CHAPTER 28 Incorporating Design Techniques and Frameworks . . . . . . . . . . . . 971
CHAPTER 29 Applying Design Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
CHAPTER 30 Developing Cross-Platform and Cross-Language Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017
APPENDIX A C++ Interviews . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039
APPENDIX B Annotated Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063
APPENDIX C Standard Library Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1075
APPENDIX D Introduction to UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1083
INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087
《C++ Crash Course》
Foreword by Peter Bindels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxix
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxxi
An Overture to C Programmers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxvii
PART I: THE C++ CORE LANGUAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Chapter 1: Up and Running . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Chapter 2: Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Chapter 3: Reference Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Chapter 4: The Object Life Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Chapter 5: Runtime Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Chapter 6: Compile-Time Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Chapter 7: Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Chapter 8: Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Chapter 9: Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
PART II: C++ LIBRARIES AND FRAMEWORKS . . . . . . . . . . . . . . . . . . . . . . . . . .279
Chapter 10: Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Chapter 11: Smart Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Chapter 12: Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Chapter 13: Containers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Chapter 14: Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
Chapter 15: Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
Chapter 16: Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
x Brief Contents
Chapter 17: Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Chapter 18: Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
Chapter 19: Concurrency and Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Chapter 20: Network Programming with Boost Asio . . . . . . . . . . . . . . . . . . . . . . . . . 663
Chapter 21: Writing Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715