Professional C__ - Marc Gregoire [0]
Part I: Introduction to Professional C++
Chapter 1: A Crash Course in C++
The Basics of C++
Diving Deeper into C++
C++ as an Object-Oriented Language
The Standard Library
Your First Useful C++ Program
Summary
Chapter 2: Designing Professional C++ Programs
What Is Programming Design?
The Importance of Programming Design
What’s Different about C++ Design?
Two Rules for C++ Design
Reusing Code
Designing with Patterns and Techniques
Designing a Chess Program
Summary
Chapter 3: Designing with Objects
Am I Thinking Procedurally?
The Object-Oriented Philosophy
Living in a World of Objects
Object Relationships
Abstraction
Summary
Chapter 4: Designing for Reuse
The Reuse Philosophy
How to Design Reusable Code
Summary
Chapter 5: Coding with Style
The Importance of Looking Good
Documenting Your Code
Decomposition
Naming
Using Language Features with Style
Formatting
Stylistic Challenges
Summary
Part II: C++ Coding the Professional Way
Chapter 6: Gaining Proficiency With Classes and Objects
Introducing the Spreadsheet Example
Writing Classes
Object Life Cycles
Summary
Chapter 7: Mastering Classes and Objects
Dynamic Memory Allocation in Objects
Different Kinds of Data Members
More about Methods
Nested Classes
Enumerated Types Inside Classes
Friends
Operator Overloading
Building Stable Interfaces
Summary
Chapter 8: Discovering Inheritance Techniques
Building Classes with Inheritance
Inheritance for Reuse
Respect Your Parents
Inheritance for Polymorphism
Multiple Inheritance
Interesting and Obscure Inheritance Issues
Summary
Chapter 9: Understanding C++ Quirks and Oddities
References
Keyword Confusion
Types and Casts
Scope Resolution
C++11
Header Files
C Utilities
Summary
Chapter 10: Handling Errors
Errors and Exceptions
Exception Mechanics
Exceptions and Polymorphism
Stack Unwinding and Cleanup
Common Error-Handling Issues
Putting It All Together
Summary
Chapter 11: Delving into the Standard Library
Coding Principles
Overview of the C++ Standard Library
Summary
Chapter 12: Understanding Containers and Iterators
Containers Overview
Sequential Containers
Container Adapters
Associative Containers
Unordered Associative Containers/Hash Tables
Other Containers
Summary
Chapter 13: Mastering STL Algorithms
Overview of Algorithms
Lambda Expressions
Function Objects
Algorithm Details
Algorithms Example: Auditing Voter Registrations
Summary
Chapter 14: Using Strings and Regular Expressions
Dynamic Strings
Localization
Regular Expressions
Summary
Chapter 15: Demystifying C++ I/O
Using Streams
String Streams
File Streams
Bidirectional I/O
Summary
Chapter 16: Additional Library Utilities
std::function
Ratios
The Chrono Library
Random Number Generation
Tuples
Summary
Chapter 17: Customizing and Extending the STL
Allocators
Iterator Adapters
Extending the STL
Summary
Part III: Mastering Advanced Features of C++
Chapter 18: Overloading C++ Operators
Overview of Operator Overloading
Overloading the Arithmetic Operators
Overloading the Bitwise and Binary Logical Operators
Overloading the Insertion and Extraction Operators
Overloading the Subscripting Operator
Overloading the Function Call Operator
Overloading the Dereferencing Operators
Writing Conversion Operators
Overloading the Memory Allocation and Deallocation Operators
Summary
Chapter 19: Writing Generic Code with Templates
Overview of Templates
Class Templates
Function Templates
Summary
Chapter 20: Advanced Templates
More about Template Parameters
Template Class Partial Specialization
Emulating Function Partial Specialization with Overloading
Template Recursion
Type Inference
Variadic Templates
Metaprogramming
Summary
Chapter 21: Effective Memory Management
Working with Dynamic Memory
Array-Pointer