Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Klasių šablonai<br />
Šio kurso metu mes dažnai naudojome sveikųjų skaičių steką. Nesunku suvokti, kad<br />
lygiai taip pat galime aps<strong>ir</strong>ašyti <strong>ir</strong> kitų bazinių tipų stekus: char, float, double, long <strong>ir</strong><br />
t.t.. Būtų labai varginantis darbas aps<strong>ir</strong>ašyti naują steko klasę kiekvienam baziniam<br />
ar pačių sukonstruotam tipui. Milžiniškas kodo pasikartojimas. Čia mes galime<br />
pasinaudoti klasių šablonais. Visur, kur naudojome žodelį int nusakyti steko<br />
elemento tipui, dabar naudokime šablono parametrą, tipą T:<br />
// stack_template.h<br />
template<br />
class Stack<br />
{<br />
private:<br />
T* elements;<br />
int size;<br />
int capacity;<br />
public:<br />
Stack (int initialCapacity = 4);<br />
~Stack ();<br />
};<br />
void push (T element);<br />
T pop ();<br />
T peek ();<br />
bool isEmpty () const;<br />
Dabar pilnas klas÷s vardas yra Stack. Jos metodų realizacijos reikalauja prierašo<br />
template:<br />
template<br />
Stack::Stack (int initialCapacity)<br />
{<br />
if (initialCapacity < 1)<br />
initialCapacity = 1;<br />
capacity = initialCapacity;<br />
size = 0;<br />
elements = new T [capacity];<br />
}<br />
...<br />
template<br />
T Stack::pop ()<br />
{<br />
if (size > 0)<br />
return elements[--size];<br />
throw std::string("pop() called on empty stack");<br />
}<br />
Dabar mes galime tur÷ti stekus su norimo tipo elementais:<br />
128