Edocti
Advanced Technical Training for the Software Engineer of Tomorrow
Edocti Training

Essential C++ Topics

Intermediate
21 h
4.8 (537 reviews)

Scheduled sessions

No sessions are available at the moment.
Essential C++ Topics

Key concepts: Solidify your understanding of essential and modern C++ features through intensive practice.

Focus hands-on on critical topics: arrays, functions, memory management, OOP, templates, STL, and concurrency.

Develop a strong foundation required for tackling advanced topics and achieving certification readiness.

Gain practical experience: Spend ~70% of the course writing, debugging, and running real C++ code.

How this course helps: Build the confidence to use C++ effectively and robustly in real-world professional projects.

Who it’s for: Designed for developers with basic C++ knowledge who want to advance their skills to an intermediate level.

By the end of the course, you’ll be able to apply intermediate-level C++ confidently and be well-prepared for the C++ Certified Associate Programmer (CPA) exam.

Skills You Will Learn

Modern C++ Basics Memory Management Object-Oriented Programming Standard Template Library C++ Templates Multithreading & Concurrency Functional Programming CPA Exam Preparation

Curriculum

Intro to C++ programming

  • Build process: from source to binary; artifacts produced at build time
  • Working with strings
  • Standard input and output
  • String formatting
  • Control flow: conditions, loops, switch
  • Floating point basics: representation, precision, comparison
  • Working with arrays
  • Multi-dimensional arrays and their sizes
  • Array operations: sorting and simple reduce operations

Elements of modern C++

  • The auto keyword
  • nullptr
  • Return type deduction
  • decltype, typeid, type traits
  • Strongly-typed enums (scoped enums)
  • static_assert and applications
  • override
  • Defaulted constructors
  • constexpr
  • Working with random numbers in modern C++

The function mechanism

  • Working with functions
  • Function parameters
  • Return type
  • Local vs. global variables
  • Warnings about using global variables

Pointers and memory

  • Variables and addresses; memory layout
  • Pointer basics and pointer arithmetic
  • NULL vs. nullptr
  • Dynamic allocation with new and delete
  • Pointers and arrays; multi-dimensional arrays
  • Arrays and functions

OOP in C++

  • struct vs. class; classes and objects
  • Abstraction and encapsulation
  • Constructors and destructors; overloading constructors
  • Initialization list vs. member initialization
  • The this keyword
  • friend, private, protected, public
  • Composition, inheritance, polymorphism, dynamic dispatch
  • final classes and methods; override and delete
  • Delegating constructors

Templates

  • Function templates and type inference
  • Class templates; nested template classes
  • Variadic templates

Practical functional programming

  • Function pointers
  • Functors
  • Lambdas
  • Lambda parameters and return types
  • Lambda capture expressions
  • How lambdas work
  • Generic lambdas; mutable lambdas

The Standard Template Library

  • Vectors; vectors and memory; multi-dimensional vectors
  • Lists
  • Maps (objects as values and keys)
  • Multimaps
  • Sets
  • Stacks
  • Queues and deques
  • Algorithms

Multithreading and parallelism

  • Basics: visibility, atomicity
  • Atomic operations in modern C++
  • Mutexes and locks
  • Condition variables: usage and scenarios

Under the hood

  • Runtime cost of C++ features
  • Virtual and pure virtual functions
  • Object addresses under (multiple) inheritance
  • No-cost C++ features vs. low-cost C++ features

Misc

  • rvalues and lvalues
  • lvalue references vs. rvalue references
  • Move constructors and move assignment operators

Course Day Structure

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:30–15:45
  • Part 4: 15:45–17:30

Did you attend this course?

Your feedback is invaluable to us. Please share your experience with us and help us improve this course for future participants.

Share your feedback

Want to find out more? We are here to help!

Or email us directly at training@edocti.com.