Aimed at the experienced C++ programmer, Herb Sutter's ExceptionalC++
tests any reader's knowledge of advanced C++ language features and idioms with several dozen programming puzzles and explanations. This is a book that can definitely help bring your C++ class design skills to the next level.
Based on the author's Guru of the Week Internet column, this book poses a series of challenging questions on the inner workings of C++, centring 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". Don't think this is just "language lawyering" though. The author's explanations stress sound programming principles (favouring simplicity) and idioms (such as the Pimpl idiom for class design that promotes faster compile times and better maintainability, or using "smart" auto_ptr's 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 at conveying this expertise without jargon or a lot of theory.
After reading this book, C++ designers will learn several "best practices" at how to write robust, efficient classes that are "exception safe" (meaning they don't throw any handled exceptions and don't leak resources). 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++, ExceptionalC++ is both a challenging and truly worthwhile source of information. --Richard Dragan, Amazon.com
Topics covered: Advanced C++ programming tutorial, generic programming, tips for string classes, containers and STL, temporary objects, exception-safe code tutorial, virtual functions, class inheritance, the Pimpl idiom, namespaces, memory management, C++ memory areas, overloading new and delete, using smart pointer with auto_ptr, using const, casts and hints for better performance and code maintainability.
"This book is a very valuable book for a wide range of C++ developers. The great thing about the questions and solutions dealing with exceptions is that they present the most important design considerations for creating *any* C++ class." -- Dennis Mancl, Lucent
"This book provides more techniques in solving real life problems in C++. The book is very well written and informative." -- John Kwan, Hewlett-Packard