Kako delujejo kalupi(vzorci)? Ko naredimo funkcijo, razred ali kaj podobnega, lahko rečemo, da bo to le vzorec (kalup), ki bo sicer kot tak neuporaben in bo postal resnična funkcija (razred, ...) šele, ko bomo določili dodatne parametre.
Sintaksa definicije vzorca je:
primer:
Za naše potrebe, kjer bomo definirali vzorec razreda skladov predmetov
iz nekega drugega razreda, boma namesto type zapisali
class - parameter našega vzorca je pač razred
predmetov, ki so naloženi na sklad:
template <class tSklElt> Sklad { ... };
Rezervirana besedica template (kalup, vzorec) nakazuje, da
definiramo kalupni razred Sklad. Ta kalup ima kot parameter
razred tSklElt - to je razred predmetov naloženih na sklad.
Njegova deklaracija seže samo do konca deklaracijskega kalupa
razreda. Ko je konec deklaracije razreda, prevajalnik razreda
tSklElt ne pozna več!
Seveda takšen kalup razreda ni takoj uporaben, saj ne ve, kaj
tSklElt sploh predstavlja. Zato moramo pred uporabo povedati
s kakšen razred (tip) predstavlja tSklElt:
Sklad <int>.
S tem iz kalupa naredimo razred skladov celih števil. Kako izgleda
celoten program si lahko ogledate na:
To ni samo definicijski modul, ampak vključuje tudi izvedbeni modul.
Primer uporabe:
int main() {
Sklad<int> s1;
Sklad<int> s2(3);
Sklad<float> s3;
.
.
.
};