Zaawansowane programowanie w języku C++

Zakres szkolenia

Szkolenie przeznaczone dla programistów C++ chcących poszerzyć swoje wiadomości dotyczące tworzenia profesjonalnego i niezawodnego kodu.

Szczegółowo omawiane są między innymi zagadnienia programowania generycznego (szablony funkcji i klas, klasy cech i wytycznych, variadic templates) i zarządzania zasobami (pamięcią) w C++ - idiom RAII oraz inteligentne wskaźniki.

Uczestnicy poznają praktyczne wykorzystanie metaprogramowania z użyciem szablonów oraz wyrażeń i funkcji constexpr.


Plan szkolenia

Move semantics

  • l-value vs. r-value
  • Referencje do r-value - T&&
  • Implementacja semantyki przenoszenia (move semantics) w klasach
  • Uniwersalne referencje - reference collapsing
  • Perfect forwarding

Zapobieganie wyciekom zasobów - technika RAII

  • Gwarancje odporności kodu na wyjątki
  • Idiom RAII (Resource Aquisition Is Initialization)

Inteligentne wskaźniki

  • Inteligentne wskaźniki - wstęp
  • std::unique_ptr
  • std::shared_ptr
  • std::weak_ptr
  • Dealokatory użytkownika

Programowanie generyczne - szablony

  • Wprowadzenie do programowania generycznego
  • Szablony funkcji i klas
  • Parametry szablonów
  • Specjalizacja szablonów
  • Programowanie generyczne z wykorzystaniem klas cech i wytycznych
  • Cechowanie typów - biblioteka <type_traits>
  • Statyczne asercje - praktyczne wykorzystanie
  • Technika SFINAE - optymalizacja implementacji w zależności od typów danych

Variadic templates

  • Szablony o dowolnej liczbie parametrów - parameter pack
  • Variadic templates - praktyczne wykorzystanie
  • Metaprogramowanie z wykorzystaniem krotek - std::tuple
  • Operacje na krotkach z wykorzystaniem sekwencji indeksów

Wyrażenia stałe - constexpr

  • Wyrażenia stałe w C++11/14
  • Praktyczne wykorzystanie constexpr - tworzenie struktur danych na etapie kompilacji

3 dni po 8 godzin lekcyjnych