Description
In this course, you will :
- Explore some of the more complex aspects of this fundamental programming language, such as smart pointers and move semantics.
- starts by delving deeper into the topic of classes and objects, including class inheritance.
- goes over smart pointers, which combine pointer functionality with managed memory allocation.
- move semantics, including the copy-and-swap idiom; lambda functions; working with a unit test library; and creating a custom string library are all covered.
Syllabus :
1. Classes and Objects
- 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
2. Class Inheritance
- Overview of inheritance
- Simple inheritance
- Accessing the base class
- Friendship
- Multiple inheritance
- Polymorphism
3. Smart Pointers
- Why smart pointers
- Unique pointer
- Shared pointer
- Weak pointer
- Using a custom deleter
- Choosing a smart pointer
4. Move Semantics
- 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
5. Lambda Functions
- Lambda syntax
- Captures
- Polymorphic lambdas
6. The C Preprocessor
- About the preprocessor
- Macros as constants
- Including files
- Conditional compilation
- Defining macros
- Including files only once
7. Unit Tests
- The importance of unit tests
- A unit test library
8. Custom String Library
- Why non-STL strings?
- Overview of BWString
- Constructors
- Memory management
- Operators
- Utility methods
- Find and replace
- Splitting strings
- Using the BWString library