C++, although a marvelous language, isn't perfect. Matthew Wilson has been working with it for over a decade, and during that time he has found inherent limitations that require skillful workarounds. In this book, he doesn't just tell you what's wrong with C++, but offers practical techniques and tools for writing code that's more robust, flexible, efficient, and maintainable. He shows you how to tame C++'s complexity, cut through its vast array of paradigms, take back control over your code--and get far better results.
If you're a long-time C++ developer, this book will help you see your programming challenges in new ways--and illuminate powerful techniques you may never have tried. If you're newer to C++, you'll learn principles that will make you more effective in all of your projects. Along the way, you'll learn how to:
-
Overcome deficiencies in C++'s type system
-
Enforce software design through constraints, contracts, and assertions
-
Handle behavior ignored by the standard--including issues related to dynamic libraries, static objects, and threading
-
Achieve binary compatibility between dynamically loading components
-
Understand the costs and disadvantages of implicit conversions--and the alternatives
-
Increase compatibility with diverse compilers, libraries, and operating environments
-
Help your compiler detect more errors and work more effectively
-
Understand the aspects of style that impact reliability
-
Apply the Resource Acquisition Is Initialization mechanism to a wide variety of problem domains
-
Manage the sometimes arcane relationship between arrays and pointers
-
Use template programming to improve flexibility and robustness
-
Extend C++: including fast string concatenation, a true NULL-pointer, flexible memory buffers, Properties, multidimensional arrays, and Ranges
The CD-ROM contains a valuable variety of C++ compilers, libraries, test programs, tools, and utilities, as well as the author's related journal articles.