Slajd PPT
Wzorce są przydatne gdy operujemy klasami zbiorczymi (klasy do przechowywania obiektów pewnego innego typu).
?typ obiektów zawartych w klasie zbiorczej nie jest specjalnie istotny dla projektanta tej klasy, jest on istotny dla użytkownika konkretnej zbiorowości.
Wzorce umożliwiają traktowanie typu argumentem klasy.
stos(int r) {v=p=new T[rozm=r];}
void wloz(T a) {*p++ = a;}
T zdejmij() {return *--p;}
int rozmiar() const {return p-v;}
//to oznacza, że deklarujemy wzorzec
//i w deklaracji używać będziemy T jako typu
//zasięg T jest do końca deklaracjii
//rozpoczętej od template<class T>
Korzysta się z tego np. tak:
Wzorzec działa trochę jak sprytna makrodefinicja z regułami zasięgu, typów i nazw C++
Gdybyśmy nie zdefiniowali metod wewnątrz wzorca klasy, to definicje tych metod trzeba dostarczyć gdzieś indziej np.:
template <class T> void stos <T>:: wloz(T a)
template <class T> stos<T>:: stos (int r)