• Nie Znaleziono Wyników

Szablony funkcji i klas

N/A
N/A
Protected

Academic year: 2021

Share "Szablony funkcji i klas"

Copied!
2
0
0

Pełen tekst

(1)

Uniwersytet Zielonogórski

Wydział Informatyki, Elektrotechniki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Informatyka stacjonarne-dzienne pierwszego stopnia z tyt. inżyniera

Laboratorium Programowania Obiektowego

Szablony funkcji i klas

Ćwiczenia

1. Dla zadania znalezienia iloczynu dwóch argumentów:

a) zrealizować szablon funkcji w wersji normalnej i operatorowej,

b) dodać funkcję specjalizowaną działającą dla tablic jednowymiarowych reprezentujących wek- tory (np. 3 elementowe),

c) w punkcie b) wprowadzić domniemany parametr szablonu określający rozmiar tablicy.

2. Zdefiniować szablon klasy umożliwiający przechowywanie tablicy o dowolnym rozmiarze danych dla dowolnego typu wbudowanego. Zdefiniować konstruktory, funkcje sortowania danych, funkcje wyznaczającą indeks elementu podanego jako argument, jeśli element nie istnieje funkcja ma zwrócić wartość -1.

3. Przeanalizować poniższe deklaracje:

int i1;

const int i2=0;

float f1,f2;

template <class T> int fun(T, T*);

template <class T,class U> U fun (T, T*,U);

int fun(int, int*);

int fun(double, double*,double=0.0);

Rozstrzygnąć, która z funkcji zostanie wywołana, gdy w programie pojawia się instrukcja:

a) i1=fun(i2,&i1); b) f1=fun(f2,&f2); c) f1=fun(f2,&f2,0.0); d) i1=fun(i2,&f2);

4. Zdefinuj wszystkie funkcje szablonu sort tak, aby poniższy kod był prawidłowy (instrukcje w main() były prawidłowe).

t e m p l a t e <? >

c l a s s s o r t { i n t ∗ wsk ; p u b l i c :

v o i d s o r t u j { }

// . . . } ;

i n t main ( ) {

s o r t <i n t , 20 , rosnąco > o b i e k t 1 ; s o r t <i n t , 3 0 , malejaco > o b i e k t 1 ; }

Zdefiniować klasę specjalizowaną dla typu char∗

5. Zdefiniować szablon klas, przechowujący wskaźnik do pewnego obiektu. Wyposażyć go w meto- dę show() wyświetlającą wartość tego wskaźnika oraz konstruktor rezerwujący dla niego pamięć.

Pokazać przykładowe deklaracje obiektów wykorzystujących ten szablon.

(2)

6. Zrealizować na prostych przykładach dziedziczenie:

a) klasy szablonowej przez zwykłą klasę, b) szablonu klas przez zwykłą klasę,

c) klasy szablonowej przez szablon klas, d) szablonu przez inny szablon,

e) zwykłej klasy przez specjalizowaną klasę szablonową, f) klasy szablonowej przez inną klasę szablonową.

Zadania do samodzielnego wykonania

1. Stworzyć szablon funkcji f ibonacci() umożliwiający wyznaczanie kolejnych elementów ciągu Fibo- nacciego dla różnego typu argumentów (np. long, f loat itp.).

2. Opierając się na szablonie klasy z zadania 2 wyposażonej dodatkowo w funkcje liczenia sumy oraz sumy kwadratów elementów, wyprowadzić dwuwymiarową tablicę liczb dowolnego typu z przełado- wanymi metodami z klasy bazowej. Sprawdzić działanie polimorfizmu dla tych klas.

3. * Zaprojektować szablon klasy przechowującej dane w postaci listy, z metodami dotyczącymi doda- wania oraz usuwania elementu, przeładowanym operatorem [] pozwalającym na pracę z listą tak jak z tablicą i wyświetlaniem zawartości. Ponadto zrealizować metodę znajdującą adres ostatniego elementu na liście w taki sposób, by mogła pracować z dowolnym typem przez nią zwracanym.

Litertura

• Grębosz J.,Symfonia C++ standard, Edition 2000, 2008

• Grębosz J., Pasja C++, Edition 2000, 200

• Stroustrup B., Język C++, Wydawnictwa Naukowo-Techniczne 1994, 2000 i 2002

• Eckel B., Thinking in C++. Edycja polska, Helion , 2002

Cytaty

Powiązane dokumenty

[r]

Wynik testów metody Wstaw w wygenerowanej instancji klasy TKol2&lt;TProdut1&gt; - (nie powinna wstawiać ponownie tych samych produktów typu TProdukt1 oraz TProdukt2) oraz metody

Wobec twierdzenia z cz¦±ci dotycz¡cej ci¡gów, warunki kryterium d'Alemberta impli- kuj¡ odpowiednie warunki z kryterium Cauchy'ego..

Zanim zajrzysz na kolejną stronę, rozwiąż powyższe zadanie, a przynaj- mniej podejmij próbę rozwiązania, aby wiedzieć, gdzie

ralna liczby 25 jest sumą czterech kwadratów liczb naturalnych. Istnieją liczby naturalne, które nie są sumami trzech ani mniej sześcianów liczb całkowitych, na

Skoro nie każdy nieujemnie określony wielomian możemy zapisać jako sumę kwadratów innych wielomianów, spróbujmy poszerzyć zakres naszych poszukiwań – zamiast

Niektóre sumy nieskończone można zilustrować, tworząc nieskończony rysunek, którego pewna część jest podobna do całości.. Na przykład na rysunku 1 taką częścią jest

(a) za pomoc¡ wzorów wykorzystuj¡cych klocki (patrz: obliczanie klocków) (b) za pomoc¡ zapisu macierzowego.. (c) za pomoc¡ gotowych funkcji (d) za pomoc¡ funkcji