Zakres szkolenia
Szkolenie przeznaczone dla osób chcących nauczyć się profesjonalnego programowania w języku C++. W trakcie szkolenia omawiane są podstawowe techniki programowania w języku C++ - tworzenie klas, dziedziczenie i polimorfizm, bezpieczne zarządzanie pamięcią dla obiektów (smart pointers), obsługa wyjątków. Szkolenie to polecane jest także dla programistów języka C, którzy chcą nauczyć się poprawnego programowania obiektowego w C++.
Koncentrujemy się na nauce nowego standardu C++11/14.
Plan szkolenia
Podstawy programowania w języku C++
- Struktura programu w języku C++
- Kompilacja oraz łączenie programów
- Preprocesor
- Typy danych, operatory i instrukcje sterujące
- Deklaracje zmiennych oraz stałych, zasięg zmiennych
- Automatyczna dedukcja typów – słowo kluczowe auto
- Konwersje typów
- Wskaźniki i referencje
Organizacja kodu - funkcje i moduły
- Definiowanie funkcji
- Przekazywanie parametrów do funkcji
- Pliki nagłówkowe i pliki źródłowe
- Organizacja kodu - bariery #include
- Przestrzenie nazw
Tablice, kontenery STL i iteratory
- Tablice w języku C++ - tablice natywne i std::array<T>
- Iteracja po zakresach – wskaźniki, iteratory, range-based-for
- Łańcuchy znaków - c-łańcuchy i typ std::string
- Podstawowe kontenery STL - std::vector<T>, std::list<T>, std::map<K, T>, std::unordered_map<K, T>
- Programowanie obiektowe
Programowanie obiektowe
- Typu użytkownika - struktury, klasy
- Funkcje składowe – metody
- Konstruktory
-
Zarządzanie zasobami - RAII
- Destruktory
- Specjalne funkcje kopiujące
- specjalne funkcje przenoszące – wstęp do semantyki przenoszenia
- Przeciążanie operatorów dla klas
-
Zarządzanie pamięcią dla obiektów – smart pointery
- std::unique_ptr
- std::shared_ptr
Funktory i lambdy
- Obiekty wywoływalne w C++11
- Funktory
- Lambdy
- std::function – callbacki w C++11
- Wykorzystanie lambd w algorytmach standardowych STL
Dziedziczenie i polimorfizm
- Klasy pochodne
- Konstruktory i destruktory a dziedziczenie
- Dostęp do składowych klasy bazowej
- Przeciążenie i przesłanianie funkcji składowych
- Dziedziczenie publiczne, chronione i prywatne - widoczność składowych w klasach pochodnych
- Statyczne i dynamiczne wiązanie funkcji
- Funkcje czysto wirtualne
- Destruktory wirtualne
- Klasy abstrakcyjne
- Polimorfizm w języku C++
- Przykład zastosowania polimorfizmu
Dziedziczenie wielobazowe
- Przykład dziedziczenia wielokrotnego
- Problemy związane z dziedziczeniem wielobazowym
- Wirtualne klasy bazowe
Obsługa wyjątków
- Koncepcja obsługi sytuacji wyjątkowych
- Bloki try... catch
- Standardowe klasy wyjątków
- Klasy wyjątków użytkownika
Strumienie
- Koncepcja strumieni w C++ - opis biblioteki iostream
- Strumienie std::cin, std::cout oraz std::err
- Strumienie plikowe
Od uczestników szkolenia wymagana jest znajomość podstaw programowania (np. C, Pascal, Java, Python, itp.).
4 dni po 8 godzin lekcyjnych