C++ – Practical Programming for Advanced Developers (CPP2)

Programming, C, C++

Modern C++ has evolved far from its 1980s roots, driven by demands for extreme performance, low latency and functional safety. The language now offers industrial features that make C++ easier to use in high-reliability environments.

Recent standards help eliminate dynamic allocation and avoid sources of unexpected latency, enabling safer, more readable and higher-performance code. The course is updated for C++20, C++23 and C++26 and can be tailored to other versions.

Location, current course term

Contact us

Custom Customized Training (date, location, content, duration)

The course:

Hide detail
  • Capabilities of the C++ language
    1. Modern C++ up to C++26
    2. How C++ differs from other languages
    3. Present and future of C++ in embedded systems
  • Object storage in memory
    1. Stack and heap allocation
    2. Bulk memory allocation and containers
    3. Initialization of allocated objects
  • Object initialization order
    1. Two-phase initialization for globals
    2. Initialization of class instance parts
    3. Local initialization and static variables
  • Working with raw pointers
    1. Pointer arithmetic
    2. Ownership and borrowing
    3. Advanced memory allocation
  • Smart pointers
    1. Allocating objects via smart pointers
    2. Shared pointers and weak references
    3. References and reference wrappers
  • Iterators, ranges and views
    1. From pointers to iterators
    2. Library support for ranges
    3. Practical chaining of views
  • Moving and copying objects
    1. Copying, move and forwarding
    2. Constructors and assignment operators
    3. Return value optimization (RVO)
  • Inheritance and polymorphism
    1. Virtual and abstract methods
    2. Mandatory virtual destructors
    3. Multiple and virtual inheritance
  • Polymorphic variables and dependencies
    1. Polymorphic references (borrowing)
    2. Polymorphic smart pointers
    3. Use of std::enable_shared_from_this and CRTP
  • Polymorphism without virtual methods
    1. Does not require dynamic allocation
    2. Variant types and the visitor pattern
    3. Lambdas and the overload pattern
  • Modularity
    1. Header files and #pragma once
    2. Namespaces and using declarations
    3. Support for modules in C++ (C++20, C++23)
  • Working with bits and bytes
    1. Fixed-width numeric types
    2. Endianness and byte order (C++20, C++23)
    3. Bit registers and bitmaps
  • Error handling and debugging
    1. User and programmer errors
    2. The exception handling system
    3. Debugging with a debugger
  • Building correct programs
    1. Undefined behavior
    2. Using sanitizers during debugging
    3. Static analyzers
Assumed knowledge:
Experience with C++ programming.
Recommended previous course:
C++ – Fundamentals of Modern C++ Programming (CPP1)
Recommended subsequent course:
C++ – Metaprogramming and High-Performance Applications (CPP5)
Schedule:
3 days (9:00 AM - 5:00 PM )
Language:

Vybrané zákaznické reference

Siemens, s.r.o., Daniel H.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Plná spokojenost s průběhem školení. Vzhledem k malému počtu účastníků jsme si mohli nechat přizpůsobit témata k našim potřebám, včetně probrání základů původně neplánovaných kapitol. Lektor během školení rychle reagoval na dotazy které byly i mimo rozsah kapitol školení a aktivně pomáhal s odladěním chyb v řešených programech."
Honeywell, spol. s.r.o., Marek M.
C++ – Practical Programming for Advanced Developers ( CPP2)
"S kurzem jsem maximálně spokojeny, nemam mu co vytknout."
Institut klinické a experimentální medicíny, Jiří G.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Chtěl jsem se dozvědět také něco o vícevláknových aplikacích, ale pak jsem zjistil, že je tomu věnován celý 3denní kurz :-)"
Akkodis CZ s.r.o., Jiří Š.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Školení bylo za mne velmi povedené. Kladně hodnotím jak zázemí školícího centra, tak znalosti pana lektora."
Honeywell, spol. s.r.o., Jakub B.
C++ – Practical Programming for Advanced Developers ( CPP2)
"nejvetsim prinosem pro me bylo pochopeni trid a dedicnosti mezi tridami"
Siemens, s.r.o., Zdeněk P.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Velmi spokojen"
Siemens, s.r.o., Jindřich K.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Pan Zahradník se očividně v tématice vyzná. Velmi oceňuji filozofii využívání nejmoderních standardů jazyka, kterou školitel zastává. Jakékoliv dotazy vždy ochotně zodpověděl a mezi dny i dohledával informace. Celkově spokojenost. "
Digiteq Automotive s.r.o., Adam K.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Skvělé školení, lektor měl obrovský přehled. "
Digiteq Automotive s.r.o., Jan R.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Velmi hezky vysvětlené témata do dosti podrobností. Bylo znát, že lektor má témata velmi nastudované a používané. Příjemný pokec na podobné témata i na obědě :)"
Digiteq Automotive s.r.o., Ondřej S.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Super. Lektor rozumi latce na expertni urovni. Osvezil jsem si veci co jsem zapomnel a naucil se spoustu novych veci."
Digiteq Automotive s.r.o., Jan D.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Celkově mám ze školení skvělý pocit. Lektor je skutečným odborníkem a to nejen na C++, nechybělo tedy porovnání napříč programovacími jazyky."
Digiteq Automotive s.r.o., Jaroslav M.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Osobně mi velice vyhovoval formát kódění před všemi místo koukaní do slidů. Co se týče celkového dojmu ze školení jsem velice spokojený. Zároveň mi přišlo velice užitečný porovnání s ostatními jazyky."
Digiteq Automotive s.r.o., Jan H.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Největším přínosem byly praktické zkušenosti z praxe a cvičení"
Digiteq Automotive s.r.o., Jan H.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Oproti základnímu kurzu mi přišlo lepší zadání cvičení. Nebyl jsem z nich zmatený. Nevím, jestli došlo k nějaké změně, nebo je to jen náhoda, každopádně to bylo lepší. Zbytek kurzu byl ve stejné (tedy dobré) kvalitě jako začátečnický kurz. Osobní přístup lektora mi velmi vyhovoval."
Digiteq Automotive s.r.o., David S.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Velmi zajímavé praktické příklady, jednotlivá témata byla rozebrána dostatečně do hloubky. Po celou dobu školení byl prostor pro dotazy, což hodnotím velice kladně. A to vše v příjemném prostředí s možností drobného občerstvení."
ERA a.s., Libor M.
C++ – Practical Programming for Advanced Developers ( CPP2)
"Kurz splnil mé očekávání."