- Master the fundamentals of C++ and object-oriented programming
- Understand how C++11 features help you write compact and efficient code using concepts such as lambda expressions, move constructors, and assignment operators
- Learn the Standard Template Library, including containers and algorithms used in most real-world C++ applications
- Test your knowledge and expertise using exercises at the end of every lesson
Learn on your own time, at your own pace:
- No previous programming experience required
- Learn C++11, object-oriented programming, and analysis
- Write fast and powerful C++ programs, compile the source code with a gcc compiler, and create executable files
- Use the Standard Template Library’s (STL) algorithms and containers to write feature-rich yet stable C++ applications
- Develop sophisticated programming techniques using lambda expressions, smart pointers, and move constructors
- Learn to expand your program’s power with inheritance and polymorphism
- Master the features of C++ by learning from programming experts
- Learn C++11 features that allow you to program compact and high-performance C++ applications
PART I: THE BASICS
LESSON 1: Getting Started with C++11
A Brief History of C++
Programming a C++ Application
What's New in C++11
LESSON 2: The Anatomy of a C++ Program
Part of 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
LESSON 3: 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
LESSON 4: Managing Arrays and Strings
What Is an Array?
Multidimensional Arrays
Dynamic Arrays
C-style Strings
C++ Strings: Using std::string
LESSON 5: Working with Expressions, Statements, and Operators
Statements
Compound Statements or Blocks
Using Operators
LESSON 6: Controlling Program Flow
Conditional Execution Using if … else
Getting Code to Execute in Loops
Modifying Loop Behavior Using continue and break
Programming Nested Loops
LESSON 7: 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
LESSON 8: 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?
PART II: FUNDAMENTALS OF OBJECT-ORIENTED C++ PROGRAMMING
LESSON 9: 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
LESSON 10: Implementing Inheritance
Basics of Inheritance
Private Inheritance
Protected Inheritance
The Problem of Slicing
Multiple Inheritance
LESSON 11: Polymorphism
Basics of Polymorphism
Using virtual Inheritance to Solve the Diamond Problem
Virtual Copy Constructors?
LESSON 12: Operator Types and Operator Overloading
What Are Operators in C++?
Unary Operators
Binary Operators
Function Operator ()
Operators That Cannot Be Overloaded
LESSON 13: 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
LESSON 14: 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
PART III: LEARNING THE STANDARD TEMPLATE LIBRARY (STL)
LESSON 15: An Introduction to the Standard Template Library
STL Containers
STL Iterators
STL Algorithms
The Interaction Between Containers and Algorithms Using Iterators
STL String Classes
LESSON 16: The STL String Class
The Need for String Manipulation Classes
Working with the STL String Class
LESSON 17: STL Dynamic Array Classes
The Characteristics of std::vector
Typical Vector Operations
Understanding the Concepts of Size and Capacity
The STL deque Class
LESSON 18: STL list and forward_list
The Characteristics of a std::list
Basic list Operations
Reversing and Sorting Elements in a List
LESSON 19: STL Set Classes
An Introduction to STL Set Classes
Basic STL set and multiset Operations
Pros and Cons of Using STL set and multiset
LESSON 20: STL Map Classes
An Introduction to STL Map Classes
Basic std::map and std::multimap Operations
Supplying a Custom Sort Predicate
PART IV: MORE STL
LESSON 21: Understanding Function Objects
The Concept of Function Objects and Predicates
Typical Applications of Function Objects
LESSON 22: 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
LESSON 23: STL Algorithms
What Are STL Algorithms?
Classification of STL Algorithms
Usage of STL Algorithms
LESSON 24: 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
LESSON 25: Working with Bit Flags Using STL