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
- Usetemplate programming to improve flexibility and
robustness
- Extend C++: including fast string concatenation, a true
NULL-pointer, flexible memory buffers, Properties,
multidimensional arrays, and Ranges
Chapter 1 Enforcing design : constraints, contracts,
and assertions
Chapter 2 Object lifetime
Chapter 3 Resource encapsulation
Chapter 4 Data encapsulation and value types
Chapter 5 Object access models
Chapter 6 Scoping classes
Chapter 7 ABI
Chapter 8 Objects across borders
Chapter 9 Dynamic libraries
Chapter 10 Threading
etc.