| |
| |
Sams Teach Yourself C++ in One Hour a Day, Seventh Edition | |
| |
| |
| |
The Basics | |
| |
| |
| |
Getting Started | |
| |
| |
A Brief History of C++ | |
| |
| |
Programming a C++ Application | |
| |
| |
What's New in C++11 | |
| |
| |
| |
The Anatomy of a C++ Program | |
| |
| |
| |
The Hello World Program | |
| |
| |
The Concept of Namespaces | |
| |
| |
Comments in C++ Code | |
| |
| |
Functions in C++ | |
| |
| |
Basic Input Using std::cin and Output Using std::cout | |
| |
| |
| |
Using Variables, Declaring Constants | |
| |
| |
What Is a Variable? | |
| |
| |
Common Compiler-Supported C++ Variable Types | |
| |
| |
Determining the Size of a Variable Using sizeof | |
| |
| |
Using typedef to Substitute a Variable's Type | |
| |
| |
What Is a Constant? | |
| |
| |
Naming Variables and Constants | |
| |
| |
Keywords You Cannot Use as Variable or Constant Names | |
| |
| |
| |
Managing Arrays and Strings | |
| |
| |
What Is an Array? | |
| |
| |
Multidimensional Arrays | |
| |
| |
Dynamic Arrays | |
| |
| |
C-style Strings | |
| |
| |
C++ Strings: Using std::string | |
| |
| |
| |
Working with Expressions, Statements, and Operators | |
| |
| |
Statements | |
| |
| |
Compound Statements or Blocks | |
| |
| |
Using Operators | |
| |
| |
| |
Controlling Program Flow | |
| |
| |
Conditional Execution Using if � else | |
| |
| |
Getting Code to Execute in Loops | |
| |
| |
Modifying Loop Behavior Using continue and break | |
| |
| |
Programming Nested Loops | |
| |
| |
| |
Organizing Code with Functions | |
| |
| |
The Need for Functions | |
| |
| |
Using Functions to Work with Different Forms of Data | |
| |
| |
How Function Calls Are Handled by the Microprocessor | |
| |
| |
| |
Pointers and References Explained | |
| |
| |
What Is a Pointer? | |
| |
| |
Dynamic Memory Allocation | |
| |
| |
Common Programming Mistakes When Using Pointers | |
| |
| |
Pointer Programming Best-Practices | |
| |
| |
What Is a Reference? | |
| |
| |
| |
Fundamentals of Object-Oriented C++ Programming | |
| |
| |
| |
Classes and Objects | |
| |
| |
The Concept of Classes and Objects | |
| |
| |
Keywords public and private | |
| |
| |
Constructors | |
| |
| |
Destructor | |
| |
| |
Copy Constructor | |
| |
| |
Different Uses of Constructors and Destructor this Pointer | |
| |
| |
sizeof() a Class | |
| |
| |
How struct Differs from class | |
| |
| |
Declaring a friend of a class | |
| |
| |
| |
Implementing Inheritance | |
| |
| |
Basics of Inheritance | |
| |
| |
Private Inheritance | |
| |
| |
Protected Inheritance | |
| |
| |
The Problem of Slicing | |
| |
| |
Multiple Inheritance | |
| |
| |
| |
Polymorphism | |
| |
| |
Basics of Polymorphism | |
| |
| |
Using virtual Inheritance to Solve the Diamond Problem | |
| |
| |
Virtual Copy Constructors? | |
| |
| |
| |
Operator Types and Operator Overloading | |
| |
| |
What Are Operators in C++? | |
| |
| |
Unary Operators | |
| |
| |
Binary Operators | |
| |
| |
Function Operator () | |
| |
| |
Operators That Cannot Be Overloaded | |
| |
| |
| |
Casting Operators | |
| |
| |
The Need for Casting | |
| |
| |
Why C-Style Casts Are Not Popular with Some C++ Programmers | |
| |
| |
The C++ Casting Operators | |
| |
| |
Problems with the C++ Casting Operators | |
| |
| |
| |
An Introduction to Macros and Templates | |
| |
| |
The Preprocessor and the Compiler | |
| |
| |
Using #define Macros to Define Constants | |
| |
| |
Using #define To Write Macro Functions | |
| |
| |
An Introduction to Templates | |
| |
| |
| |
Learning the Standard Template Library (STL) | |
| |
| |
| |
An Introduction to the Standard Template Library | |
| |
| |
STL Containers | |
| |
| |
STL Iterators | |
| |
| |
STL Algorithms | |
| |
| |
The Interaction Between Containers and Algorithms Using Iterators | |
| |
| |
STL String Classes | |
| |
| |
| |
The STL String Class | |
| |
| |
The Need for String Manipulation Classes | |
| |
| |
Working with the STL String Class | |
| |
| |
| |
STL Dynamic Array Classes | |
| |
| |
The Characteristics of std::vector | |
| |
| |
Typical Vector Operations | |
| |
| |
Understanding the Concepts of Size and Capacity | |
| |
| |
The STL deque Class | |
| |
| |
| |
STL list and forward_list | |
| |
| |
The Characteristics of a std::list | |
| |
| |
Basic list Operations | |
| |
| |
Reversing and Sorting Elements in a List | |
| |
| |
| |
STL Set Classes | |
| |
| |
An Introduction to STL Set Classes | |
| |
| |
Basic STL set and multiset Operations | |
| |
| |
Pros and Cons of Using STL set and multiset | |
| |
| |
| |
STL Map Classes | |
| |
| |
An Introduction to STL Map Classes | |
| |
| |
Basic std::map and std::multimap Operations | |
| |
| |
Supplying a Custom Sort Predicate | |
| |
| |
| |
More STL | |
| |
| |
| |
Understanding Function Objects | |
| |
| |
The Concept of Function Objects and Predicates | |
| |
| |
Typical Applications of Function Objects | |
| |
| |
| |
C++11 Lambda Expressions | |
| |
| |
What Is a Lambda Expression? | |
| |
| |
How to Define a Lambda Expression | |
| |
| |
Lambda Expression for a Unary Function | |
| |
| |
Lambda Expression for a Unary Predicate | |
| |
| |
Lambda Expression with State via Capture Lists | |
| |
| |
The Generic Syntax of Lambda Expressions | |
| |
| |
Lambda Expression for a Binary Function | |
| |
| |
Lambda Expression for a Binary Predicate | |
| |
| |
| |
STL Algorithms | |
| |
| |
What Are STL Algorithms? | |
| |
| |
Classification of STL Algorithms | |
| |
| |
Usage of STL Algorithms | |
| |
| |
| |
Adaptive Containers: Stack and Queue | |
| |
| |
The Behavioral Characteristics of Stacks and Queues | |
| |
| |
Using the STL stack Class | |
| |
| |
Using the STL queue Class | |
| |
| |
Using the STL Priority Queue | |
| |
| |
| |
Working with Bit Flags Using STL | |
| |
| |
The bitset Class | |
| |
| |
Using std::bitset and Its Members | |
| |
| |
The vector<bool> | |
| |
| |
| |
Advanced C++ Concepts | |
| |
| |
| |
Understanding Smart Pointers | |
| |
| |
What Are Smart Pointers? | |
| |
| |
How Are Smart Pointers Implemented? | |
| |
| |
Types of Smart Pointers | |
| |
| |
Popular Smart Pointer Libraries | |
| |
| |
| |
Using Streams for Input and Output | |
| |
| |
Concept of Streams | |
| |
| |
Important C++ Stream Classes and Objects | |
| |
| |
Using std::cout for Writing Formatted Data to Console | |
| |
| |
Using std::cin for Input | |
| |
| |
Using std::fstream for File Handling | |
| |
| |
Using std::stringstream for String Conversions | |
| |
| |
| |
Exception Handling | |
| |
| |
What Is an Exception? | |
| |
| |
What Causes Exceptions? | |
| |
| |
Implementing Exception Safety via try and catch | |
| |
| |
How Exception Handling Works | |
| |
| |
| |
Going Forward | |
| |
| |
What's Different in Today's Processors? | |
| |
| |
How to Better Use Multiple Cores | |
| |
| |
Writing Great C++ Code | |
| |
| |
Learning C++ Doesn't Stop Here! | |
| |
| |
Appendixes | |
| |
| |
| |
Working with Numbers: Binary and Hexadecimal | |
| |
| |
| |
C++ Keywords | |
| |
| |
| |
Operator Precedence | |
| |
| |
| |
Answers | |
| |
| |
| |
ASCII Codes | |