Zaawansowane programowanie w języku C++

 

Czas trwania:

3 dni po 8 godzin lekcyjnych


Opis szkolenia:

Szkolenie przeznaczone dla programistów C++ chcących poszerzyć swoje wiadomości dotyczące tworzenia profesjonalnego i niezawodnego kodu. Omawiane są między innymi zagadnienia zaawansowanego zarządzania pamięcią w C++, odporności tworzonego kodu na wyjątki, szablony oraz inteligentne wskaźniki.


Plan szkolenia:

Wskaźniki i referencje - podobieństwa i różnice

Modyfikator const i poprawa jakości kodu

  • const i argumenty funkcji
  • Metody z modyfikatorem const
  • Zwracane wartości jako const

Operatory rzutowania w C++

  • Klasyczne operatory rzutowania
  • Operatory ograniczone: static_cast, const_cast, dynamic_cast oraz reinterpret_cast

Przestrzenie nazw

  • Wykorzystanie przestrzeni nazw
  • Aliasy
  • Anonimowe przestrzenie nazw

Dynamiczne zarządzanie pamięcią w C++

  • Operator new oraz tablicowy operator new[]
  • Operator delete oraz tablicowy operator delete[]
  • Funkcje operator new i operator delete oraz ich wersje tablicowe
  • Przeładowanie globalnych funkcji operator new i operator delete

Obsługa sytuacji wyjątkowych

  • Bloki try/catch
  • Hierarchia wyjątków biblioteki standardowej
  • Poprawne tworzenie własnych klas wyjątków
  • Specyfikacja rzucanych wyjątków przez funkcje oraz metody
  • Gwarancje odporności kodu na wyjątki (słaba, mocna i gwarancja niezawodności) oraz ich implementacja
  • Wyjątki w konstruktorach klasy
  • Wyjątki a destruktory
  • Wyjątki a wycieki pamięci (memory leaks)

Zapobieganie wyciekom zasobów - technika RAII

  • Idiom RAII (Resource Aquisition Is Initialization)
  • Inteligentne wskaźniki - wstęp

Programowanie generyczne - szablony

  • Wprowadzenie do programowania generycznego
  • Szablony funkcji
  • Szablony klas
  • Tworzenie własnych szablonów funkcji oraz klas
  • Specjalizacja szablonów klas
  • Parametry szablonów klas

Inteligentne wskaźniki

  • std::auto_ptr
  • boost::scoped_ptr
  • boost::shared_ptr
  • boost::weak_ptr
  • boost::intrusive_ptr