31.12.2014 Views

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Funkcijų šablonai<br />

Pačioje šablonų ats<strong>ir</strong>adimo pradžioje kai kurie programuotojai juos laik÷ tik<br />

griozdišku programavimo kalbos C preprocesoriaus makrosų pakaitalu. Standartinis<br />

pavyzdys - funkcijos min <strong>ir</strong> max:<br />

// minmax.cpp<br />

#define MIN(x, y) ((x) < (y) (x) : (y))<br />

#define MAX(x, y) ((x) > (y) (x) : (y))<br />

Pakeiskime šiuos C makrosus C++ funkcijų šablonais:<br />

template<br />

T min (T x, T y)<br />

{<br />

return x < y x : y;<br />

}<br />

template<br />

T max (T x, T y)<br />

{<br />

return x > y x : y;<br />

}<br />

Prieš kiekvieną funkcijos šabloną eina užrašas template arba<br />

template , kur AAA yra tipo parametro vardas. Funkcijos min šablono<br />

parametras yra tipas T, kuris nebūtinai turi būti klas÷s vardas. Reikalaujama, kad<br />

tipas tur÷tų konkrečias savybes, bet nereikalaujame, kad priklausytų konkrečiai<br />

klasių hierarchijai. Mūsų pavyzdyje tipui T turi būti apibr÷žtos palyginimo<br />

operacijos > <strong>ir</strong>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!