Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions
Aimed at the experienced C++ programmer, Herb Sutter'sExceptional C++tests the reader's knowledge of advanced C++ language features and idioms with several dozen programming puzzles and explanations. This book can definitely help raise your C++ class design skills to the next level.Based on the author's Guru of the Week Web column, this book poses a series of challenging questions on the inner workings of C++, centering around generic programming with the Standard Template Library (STL), exception handling, memory management, and class design. Even if you think you know C++ well, most of these problems will teach you something more about the language and how to write more robust classes that are "exception safe" (meaning they don't throw any handled exceptions or leak resources). Don't think this is just "language lawyering," though. The author's explanations stress sound programming principles (favoring simplicity) and idioms (such as thePimplidiom for class design that promotes faster compile times and better maintainability, or using "smart"auto_ptrs with STL.) Judging from the range and depth of these examples, Sutter's command of the inner workings of C++ is impressive, and he does an excellent job of conveying this expertise without jargon or a lot of theory.After reading this book, C++ designers will learn several "best practices" of how to write robust, efficient classes that are "exception safe." Chances are you'll gain a better understanding of memory management techniques and working with STL too. For the experienced developer seeking leading-edge knowledge of some of the best ways to use C++,Exceptional C++is both a challenging and truly worthwhile source of information.--Richard DraganTopics covered: Advanced C++ programming tutorial, generic programming, tips for string classes, containers and STL, temporary objects, exception-safe code tutorial, virtual functions, class inheritance, thePimplidiom, namespaces, memory management, C++ memory areas, overloadingnewanddelete, using smart pointer withauto_ptr, usingconst, casts, and hints for better performance and code maintainability.