C++: Advanced Topics (2018)
3h 16mAdvanced2018-12-20
Authors

Bill Weinman
Tech Advocate, Entrepreneur, Programming Expert
Course details
Want to deepen your understanding of C++? In this course, explore some of the more complex aspects of this core programming language, from smart pointers to move semantics. Instructor Bill Weinman begins by diving deeper into the subject of classes and objects, including class inheritance. Next, Bill goes over smart pointers, which provide the functionality of a pointer with managed memory allocation. He also covers move semantics, including the copy-and-swap idiom; lambda functions; working with a unit test library; and creating a custom string library. As he wraps up the course, Bill shares practical applications of these concepts, helping you grasp how to leverage your new skills in your own C++ projects.
Topics include:
Classes and objects
Constructors and conversion operators
Class inheritance
Smart pointers
Move semantics
Lambda syntax
The C preprocessor
Unit tests
Building a custom string library
Topics include:
Classes and objects
Constructors and conversion operators
Class inheritance
Smart pointers
Move semantics
Lambda syntax
The C preprocessor
Unit tests
Building a custom string library
Skills covered
C++AdvancedProgramming LanguagesOpen SourceSoftware Development
Concepts
0. Introduction
- 01 - Advanced programming with C++
1. Classes and Objects
- 02 - Defining a class
- 03 - Data members
- 04 - Function members
- 05 - Constructors and destructors
- 06 - Explicit constructors
- 07 - Namespaces
- 08 - Self-referencing pointer
- 09 - Operator overloads
- 10 - Non-member operators
- 11 - Conversion operators
- 12 - Increment and decrement operators
- 13 - Allocating object memory
- 14 - Functors
- 15 - Example - numword
2. Class Inheritance
- 16 - Overview of inheritance
- 17 - Simple inheritance
- 18 - Accessing the base class
- 19 - Friendship
- 20 - Multiple inheritance
- 21 - Polymorphism
3. Smart Pointers
- 22 - Why smart pointers
- 23 - Unique pointer
- 24 - Shared pointer
- 25 - Weak pointer
- 26 - Using a custom deleter
- 27 - Choosing a smart pointer
4. Move Semantics
- 28 - What is move semantics
- 29 - Understanding lvalues and rvalues
- 30 - Using std - - move
- 31 - The move constructor
- 32 - The move assignment operator
- 33 - The copy-and-swap idiom
- 34 - Rule of five
5. Lambda Functions
- 35 - Lambda syntax
- 36 - Captures
- 37 - Polymorphic lambdas
6. The C Preprocessor
- 38 - About the preprocessor
- 39 - Macros as constants
- 40 - Including files
- 41 - Conditional compilation
- 42 - Defining macros
- 43 - Including files only once
7. Unit Tests
- 44 - The importance of unit tests
- 45 - A unit test library
8. Custom String Library
- 46 - Why non-STL strings
- 47 - Overview of BWString
- 48 - Constructors
- 49 - Memory management
- 50 - Operators
- 51 - Utility methods
- 52 - Find and replace
- 53 - Splitting strings
- 54 - Using the BWString library
Conclusion
- 55 - Next steps