PROFESSIONAL
C++
Fourth Edition
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xlvii
▸ 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 Sta
1