Deepen your understanding of C++. Learn about some of the more advanced aspects of this core programming language, from smart pointers to move semantics.
Overview
Syllabus
Introduction
- Advanced programming with C++
- Defining a class
- Data members
- Function members
- Constructors and destructors
- Explicit constructors
- Namespaces
- Self-referencing pointer
- Operator overloads
- Non-member operators
- Conversion operators
- Increment and decrement operators
- Allocating object memory
- Functors
- Example: numword
- Overview of inheritance
- Simple inheritance
- Accessing the base class
- Friendship
- Multiple inheritance
- Polymorphism
- Why smart pointers
- Unique pointer
- Shared pointer
- Weak pointer
- Using a custom deleter
- Choosing a smart pointer
- What is move semantics
- Understanding lvalues and rvalues
- Using std::move
- The move constructor
- The move assignment operator
- The copy-and-swap idiom
- Rule of five
- Lambda syntax
- Captures
- Polymorphic lambdas
- About the preprocessor
- Macros as constants
- Including files
- Conditional compilation
- Defining macros
- Including files only once
- The importance of unit tests
- A unit test library
- Why non-STL strings?
- Overview of BWString
- Constructors
- Memory management
- Operators
- Utility methods
- Find and replace
- Splitting strings
- Using the BWString library
- Next steps
Taught by
Bill Weinman