C++ – Praktické programování pro pokročilé (CPP2)

Programování, C, C++

Moderní C++ se od původních verzí z osmdesátých let značně liší. Současné verze reagují především na požadavky na extrémní výkon, nízké latence a funkční bezpečnost a značně tak ulehčuje použití C++ především v prostředí průmyslu.

Posledních několik verzí standardu posouvá C++ především k možnosti eliminovat dynamickou alokaci a vyhnout se dalším zdrojům nečekaných zpoždění. Zároveň moderní C++ umožňuje psát výkonnější, čitelnější, srozumitelnější a v mnoha případech i bezpečnější kód.

Kurz je aktualizovaný na standardy C++20, C++23 a C++26. Po dohodě lze přizpůsobit pro některou ze starších verzí nebo naopak připravit zkrácenou verzi na vyzkoušení nových standardů.

TOTO ŠKOLENÍ VÁM POMŮŽE:

  • Prohloubit a upevnit znalost programovacího jazyka C++ a jeho standardní knihovny
  • Aktualizovat znalost jazyka a knihovny na verze standardu a aktuální zvyklosti
  • Porozumět detailům objektově orientovaného datového modelu v C++ a jeho důsledkům

KDO BY SE MĚL KURZU ZÚČASTNIT?

  • Zkušenější vývojáři embedded systémů a průmyslových aplikací
  • Vývojáři serverových aplikací s požadavky na vysoký výkon
  • Zájemci o programovací jazyky a detaily jejich zpracování

KDE A KDY KURZ PROBÍHÁ?



Tento kurz není vypisován v otevřených termínech pro veřejnost.
Realizujeme jej výhradně jako školení na klíč, pro které může být zde uvedená osnova inspirací. Finální obsah, časový rozsah, termíny i forma realizace jsou vždy přizpůsobeny konkrétním požadavkům zadavatele. Školit můžeme také v angličtině.

Poptat kurz na míru

Náplň kurzu:

Skrýt detaily
  • Možnosti programovacího jazyka C++
    1. Moderní C++ až po nejnovější C++26
    2. V čem se C++ liší od ostatních jazyků
    3. Současnost a budoucnost C++ v embedded
  • Uložení objektů v paměti
    1. Alokace na zásobníku a haldě
    2. Hromadná alokace paměti a kontejnery
    3. Inicializace alokovaných objektů
  • Pořadí inicializace objektů
    1. Globální dvoufázová inicializace
    2. Inicializace částí instance třídy
    3. Lokální inicializace a static
  • Práce s raw ukazateli
    1. Pointerová aritmetika
    2. Vlastnictví a půjčování
    3. Pokročilá alokace paměti
  • Smart ukazatele
    1. Alokace objektů přes smart pointery
    2. Sdílené pointery a slabé reference
    3. Reference a reference wrappery
  • Iterátory, ranges a views
    1. Od ukazatelů po iterátory
    2. Knihovna pro práci s rozsahy
    3. Praktické řetězení views
  • Přesouvání objektů mezi místy
    1. Kopírování, move a forwarding
    2. Konstruktory a operátor přiřazení
    3. Optimalizace návratové hodnoty (RVO)
  • Dědičnost a polymorfismus
    1. Virtuální a abstraktní metody
    2. Povinné virtuální destruktory
    3. Vícenásobná a virtuální dědičnost
  • Polymorfní proměnné a závislosti
    1. Polymorfní reference (borrowing)
    2. Polymorfní smart pointery
    3. Použití std::enable_shared_from_this (CRTP)
  • Polymorfismus bez virtuálních metod
    1. Nevyžaduje dynamickou alokaci
    2. Typ variant a visitor pattern
    3. Lambda funkce a overload pattern
  • Modularita
    1. Hlavičkové soubory a #pragma once (header)
    2. Jmenné prostory a using (namespace)
    3. Podpora modulů v C++ (C++20, C++23)
  • Práce s bity a bajty
    1. Číselné typy pevné šířky
    2. Endianess a byte order (C++20, C++23)
    3. Bitové registry a mapy
  • Ošetření chyb a ladění programů
    1. Uživatelské a programátorské chyby
    2. Systém výjimek (exceptions)
    3. Ladění pomocí debuggeru
  • Tvorba korektních programů
    1. Nedefinované chovnání
    2. Použití sanitizerů při ladění
    3. Statické analyzátory
Předpokládané znalosti:
Zkušenost s programováním v jazyce C++.
Doporučený předchozí kurz:
C++ – Základy programování v moderním C++ (CPP1)
Doporučený následný kurz:
C++ – Metaprogramování a výkonné aplikace (CPP5)
Časový rozvrh:
3 dny (9:00-17:00)

Ukázka prostředí a výuky