The ANSI/ISO C++ Professional Programmers Handbook is a concise professional C++ reference tool that presents all of the changes and addenda to the language specification. It contains tips and guidelines for exerting the full potential of C++ as a multi-purpose object-oriented programming language. The new Standard Briefing component provides coverage of the latest version of the C++ language including additions and modifications to the language, new constructs such as built-in bool type, namespaces, RTTI, new header file conventions, internalization, memory management and new cast notation. Additionally, we've included a Manual of Programming Style, a Compatibility Compendium, and Future Directions overview.
I. WHAT'S NEW IN C++?1. Introduction.
The Origins of C++. ANSI Committee Established. C++ as Opposed to Other Object-Oriented Languages. Aim of the Book. Target Audience. Organization of the Book.2. Standard Briefing: The Latest Addenda to ANSI/ISO C++.
Introduction. The Standard's Terminology. Addenda. Deprecated Feature. Conclusions.
II. OO DESIGN AND PROGRAMMING.3. Operator Overloading.
Operator Overloading Rules of Thumb. Restrictions on Operator Overloading. Conversion Operators. Postfix and Prefix Operators. Using Function Call Syntax. Consistent Operator Overloading. Returning Objects by Value. Multiple Overloading. Overloading Operators for Other \tUser-Defined Types. Overloading the Subscript Operator. Function Objects. Conclusions.4. Special Member Functions: Default \tConstructor, Copy Constructor, Destructor, and Assignment Operator.
Constructors. Copy Constructor. Simulating Virtual Constructors. Assignment Operator. When Are User-Written Copy Constructors \tand Assignment Operators Needed? Implementing Copy Constructor and \tAssignment Operator. Blocking Object Copying. Destructors. Constructors and Destructors Should \tBe Minimal. Conclusions.5. Object-Oriented Programming and Design.
Programming Paradigms. Techniques Of Object-Oriented Programming. Designing Class Hierarchies. Conclusions.
III. FACILITIES FOR EXTENSIBLE AND ROBUST DESIGN.6. Exception Handling.
Introduction. Traditional Error Handling Methods. Enter Exception Handling. Applying Exception Handling. Exceptions During Object's Construction and Destruction. Global Objects: Construction and Destruction. Advanced Exception Handling Techniques. Exception Handling Performance Overhead. Misuses of Exception Handling. Conclusions.7. Runtime Type Information.
Structure of This Chapter. Making Do Without RTTI. RTTI Constituents. The Cost of Runtime Type Information. Conclusions.8. Namespaces.
Introduction. The Rationale Behind Namespaces. A Brief Historical Background. Properties of Namespaces. Namespace Utilization Policy in Large-Scale Projects. Namespaces and Version Control. The Interaction of Namespaces with Other Language Features. Restrictions on Namespaces. Conclusions.
IV. TEMPLATES AND GENERIC PROGRAMMING.9. Templates.
Introduction. Class Templates. Function Templates. Performance Considerations. Interaction with Other Language Features. Conclusions.10. STL and Generic Programming.
Generic Programming. Organization of STL Header Files. Containers. Iterators. Algorithms. Function Objects. Adaptors. Allocators. Specialized Containers. Associative Containers. Class auto_ptr. Nearly Containers. Class string. Conclusions.
V. UNDER THE HOOD.11. Memory Management.
Introduction. Types of Storage. POD (Plain Old Data) and Non-POD Objects. The Lifetime of a POD Object. The Lifetime of a Non-POD Object. Allocation and Deallocation Functions. malloc() and free() Versus new and delete. new and delete. Exceptions During Object Construction. Alignment Considerations. The Size of a Complete Object Can Never \tBe Zero. Overloading new and delete in a Class. Guidelines for Effective Memory Usage. Explicit Initializations of POD Objectve. Data Pointers Versus Function Pointers. Pointer Equality. Storage Reallocation. Local Static Variables. Global Anonymous Unions. The const and volatile Properties of \tan Object. Conclusions.12. Optimizing Your Code.
Introduction. Before Optimizing Your Software. Declaration Placement. Inline Functions. Optimizing Memory Usage. Speed Optimizations. A Last Resort. Conclusions.13. C Language Compatibility Issues.
Differences Between ISO C and the C Subset of ANSI/ISO C++. Quiet Differences Between C and C++. Migrating From C to C++. Designing Legacy Code Wrapper Classes. Multilingual Environments. C and C++ Linkage Conventions. Minimize the Interface Between C and C++ Code. Mixing iostream Classes with stdio.h Functions. Accessing a C++ Object in C Code. Conclusions.14. Concluding Remarks & Future Directions.
Introduction. Some of the Features That Almost Made It into the Standard. The Evolution of C++ Compared to Other Languages. Possible Future Additions to C++. Conclusions.
VI. APPENDIXES.Appendix A. Manual of Programming Style.
Introduction. Coding Conventions. Design by Contract. Avoid Function-Like Macros and Macro Constants. Be Cautious with Unsigned Integers. Prefer References to Pointers. Use typedef Judiciously. Place a default Label in Every switch Statement. Avoid Using Double Underscore in Identifiers. Avoid Using Deprecated Features. Use New Cast Operators Instead of C-style Cast. Remember to Update Comments When the Code is Changed. Use Numerous Access Specifiers When It Can Improve Readability. Use #include Guards. Infrastructure Components Should Trust Their Users. Use Type Affixes in Hard Coded Literals. When to Use a Pure Virtual Member Function. Avoid Improper Inheritance. Conclusions.Appendix B. C++ Keywords.