16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

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.

ozmieszczenie 50 liczb typu int (po 2 bajty każda). Liczbę<br />

potrzebnych bajtów pamięci - 100 przekazujemy jako argument<br />

konstruktorowi w momencie deklaracji struktury typu Stos. Nasza<br />

struktura w programie będzie się nazywać nasz_stos.<br />

main()<br />

{<br />

...<br />

Stos nasz_stos(100);<br />

...<br />

Kiedy wykorzystamy naszą strukturę w programie, możemy zwolnić<br />

pamięć przeznaczoną dla struktury posługując się funkcją<br />

biblioteczną C free(). Przykład przydziału pamięci przy pomocy<br />

pary operatorów new - delete już był, przedstawimy tu zatem<br />

tradycyjną (coraz rzadziej stosowaną metodę) opartą na<br />

"klasycznych" funkcjach z biblioteki C. Funkcją free() posłużymy<br />

się w destruktorze struktury nasz_stos - ~Stos(). Destruktory są<br />

wywoływane automatycznie, gdy kończy się działanie programu, lub<br />

też, gdy struktura (obiekt) przestaje być widoczna / dostępna w<br />

programie. Obiekt (struktura) przestaje być widoczny (podobnie<br />

ja zwykła zmienna lokalna/globalna), jeśli opuszczamy tę<br />

funkcję, wewnątrz której obiekt został zadeklarowany. Jest to<br />

właściwość bardzo ważna dla naszego przykładowego stosu. W<br />

naszym programie przykładowym pamięć przydzielona strukturze<br />

stack pozostaje zarezerwowana "na zawsze", nawet wtedy, gdy nasz<br />

stos przestaje być "widoczny" (ang. out of scope). Obiekt może<br />

przestać być widoczny np. wtedy, gdy działa funkcja "nie<br />

widząca" obiektu. Idąc dalej tym torem rozumowania, jeśli<br />

destruktor zostanie wywołany automatycznie zawsze wtedy, gdy<br />

obiekt przestanie być widoczny, istnienie destruktora w<br />

definicji typu struktur Stos pozwala na automatyczne wyzerowanie<br />

stosu. Deklarujemy destruktor podobnie do konstruktora, dodając<br />

przed nazwą destruktora znak ~ (tylda):<br />

struct Stos<br />

{<br />

...<br />

public:<br />

...<br />

~Stos(void);<br />

...<br />

}<br />

Jeśli program zakończy się lub struktura przestanie być<br />

widoczna, zostanie wywołany destruktor struktury nasz_stos i<br />

pamięć zostanie zwolniona. Praktycznie oznacza to, że możemy<br />

zwolnić pamięc przyporządkowaną strukturze w taki sposób:<br />

Stos::~Stos(void)<br />

//Definicja destruktora<br />

- 273-

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

Saved successfully!

Ooh no, something went wrong!