Nowoczesne programowanie w C++
Cele szkolenia
Uczestnicy szkolenia poznają:
- nowe elementy języka C++, takie jak
nullptr, mechanizmy dedukcjiautoidecltype, pętlę range-based for, silnie typizowane typy wyliczeniowe (scoped enums) oraz jednolitą składnię inicjalizacji - implementację semantyki przenoszenia dla klas i mechanizm perfect forwarding'u
- wyrażenia lambda i ich praktyczne zastosowanie
- mechanizmy bezpiecznego zarządzania pamięcią przy pomocy smart pointerów
- nowości w szablonach: variadic templates i fold expressions
- nowości w bibliotece standardowej, takie jak
std::tuple,std::optionalistd::variant - możliwości wywoływania funkcji i tworzenia struktur danych na etapie kompilacji
Plan szkolenia
Nowości w składni języka
- Nowe typy podstawowe w C++11/17
- Literały znakowe - raw strings
- Pusty wskaźnik nullptr
- Automatyczna dedukcja typów
- Mechanizm dedukcji auto
- Mechanizm dedukcji decltype
- Dedukcja typu zwracanego z funkcji
- Nowe typy wyliczeniowe - scoped enumerations
- Instrukcje if oraz switch z inicjalizatorami zmiennych
- Pętle for dla zakresów (range-based-for)
- Jednolita składnia inicjalizacji
- Listy inicjalizujące
- Statyczne składowe inline
- Nowe atrybuty:
[[nodiscard]],[[maybe_unsued]]itp.
Nowości w klasach
- Specjalne funkcje składowe
- Domyślna inicjalizacja składowych niestatycznych
- Delegowanie i dziedziczenie konstruktorów
- Kontrola nadpisywania metod wirtualnych -
override - Blokowanie dziedziczenia lub nadpisywania metod -
final - Funkcje konwersji deklarowane jako
explicit
Semantyka przenoszenia
- lvalue vs. rvalue
- Referencje do rvalue -
T&& - Implementacja semantyki przenoszenia (move semantics) w klasach
- Implementacja funkcji
std::move() - Perfect forwarding i uniwersalne referencje
- Copy Elision i Return Value Optimisation (RVO)
noexcepti optymalizacja wydajności
Wyrażenia lambda
- Obiekty wywoływalne w nowoczesnym C++ - callables
- Wyrażenia lambda i klasy domknięć
- Przechwytywanie zmiennych lokalnych w domknięciach
- Wykorzystanie lambd w algorytmach STL
- Przechowywanie lambd w zmiennych -
autovs.std::function- Kolejki zadań
- Implementacja wywołań zwrotnych - callbacks
Zarządzanie pamięcią w nowoczesnym C++
- Idiom RAII (Resource Aquisition Is Initialization)
- Inteligentne wskaźniki
std::unique_ptrstd::shared_ptrstd::weak_ptr
- Dealokatory użytkownika
Programowanie na etapie kompilacji
- Wyrażenia stałe
constexpr - Funkcje
constexpr - Praktyczne wykorzystanie constexpr - tworzenie struktur danych na etapie kompilacji
constexpr if
Szablony
- Cechy typów - biblioteka Type Traits
- Szablony wariadyczne - variadic templates
- Fold expressions
- Class Template Argument Deduction - CTAD
Biblioteka standardowa
std::byte- Tablice o stałym rozmiarze -
std::array - Kontenery z haszowaniem
std::function- Krotki -
std::tuple- Zwracanie wielu wartości z funkcji – structured bindings w C++17
- Typowe przypadki użycia krotek – pisanie operatorów porównania dla typów użytkowników itp.
std::string_viewstd::optional- Obiekty dynamiczne -
std::any - Typ wariantowy
std::varianti mechanizm wizytacji
Wymagania
Opanowane podstawy programowania w języku C++
Czas trwania
5 dni po 8 godzin lekcyjnychWycena szkolenia zamkniętego
Szkolenie zamknięte w siedzibie Klienta.
Klient zapewnia salę szkoleniową i sprzęt.
Zapytaj o termin i cenęWycena szkolenia zdalnego
Szkolenie zamknięte w siedzibie Klienta.
Szkolenie live online. Warsztaty z trenerem.
Zapytaj o termin i cenę