żeby struktura dziedziczyła po klasie i na odwrót.
Jakie elementy klasy nie podlegają dziedziczeniu?
1. Konstruktory
2. Destruktory
3. Operator przypisania (=)
Jak wygląda algorytm wyboru funkcji przeciążonej?
1. Dopasowanie dokładne: brak lub trywialne konwersje (T -> const T)
2. Dopasowanie z promocjami (całkowitymi lub zmiennoprzecinkowymi), np. bool -> int czy float -> double.
3. Dopasowanie ze standardowymi konwersjami (double -> int)
4. Dopasowanie z konwersjami zdefiniowanymi przez użytkownika (operatory konwersji, konstruktory konwertujące)
5. Dopasowanie do funkcji z dowolną ilością parametrów.
Co to jest metaprogramowanie?
Technika programowania umożliwiająca programom tworzenie/modyfikację kodu źródłowego innych programów lub ich samych. Jedną z implementacji jest metaprogramowanie z użyciem szablonów w C++.
Co to jest programowanie uogólnione (generic programming)?
Pozwala na pisanie kodu bez wcześniejszej znajomości typów danych, na których ten kod będzie pracować. W C++ realizowane przy pomocy szablonów.
Opisz pojęcie klasy wytycznych (policy class).
Klasa wytycznych mówi, w jaki sposób ma być realizowana obsługa elementarnego zadania w większej klasie X. Do klasy X przekazywana jest jako parametr szablonu. Przykład klasy parametryzowanej wytycznymi: template <class T, class Foo> class Bar: public Foo {
};
Możemy teraz sami decydować, po jakiej klasie ma dziedziczyć klasa Bar. Klasa, po której dziedziczymy, jest właśnie klasą wytycznych.
Przykłady: alokatory w STL-u.
Konkretyzacja na żądanie i konkretyzacja jawna.
1. Konkretyzacja jawna - kompilator konkretyzuje od razu całą klasę w momencie, gdy będziemy chcieli jej użyć.
2. Konkretyzacja na żądanie - kompilator konkretyzuje wyłącznie metody klasy, które
6 z 13