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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

do skasowania obiektu możemy zastosować tzw. desruktor (ang.<br />

destructor). Nazwy konstruktora i destruktora są identyczne z<br />

nazwą macieżystego typu struktur (macieżystej klasy), z tym, że<br />

nazwa destruktora poprzedzona jest znakiem "~" (tylda).<br />

CO TO JEST DESTRUKTOR.<br />

Specjalna funkcja - destruktor (jeśli zadeklarujemy zastosowanie<br />

takiej funkcji) jest wywoływana automatycznie, gdy program<br />

zakończy korzystanie z obiektu. Konstruktor towrzy, a destruktor<br />

(jak sama nazwa wskazuje) niszczy strukturę (obiekt) i zwalnia<br />

przyporządkowaną pamięć. Przykład poniżej to program<br />

manipulujący stosem, rozbudowany tak, by zawierał i konstruktor<br />

i destruktor struktury (obiektu). Zorganizujmy zarządzanie<br />

pamięcią przeznaczoną dla stosu w taki sposób:<br />

struct Stos<br />

{<br />

private:<br />

int *bufor_danych;<br />

int licznik;<br />

public:<br />

Stos(int ile_RAM);<br />

int Pop(int *ze_stosu);<br />

int Push(int na_stos);<br />

};<br />

/* Konstruktor<br />

gdzie:<br />

*bufor_danych - wskaźnik do bufora (wypełniającego rolę stosu),<br />

licznik - wierzchołek stosu, jeśli == -1, stos jest pusty.<br />

Stos::Stos(...) - konstruktor inicjujący strukturę typu Stos<br />

(lub obiekt klasy Stos),<br />

ile_RAM - ilość pamięci potrzebna do poprawnego działanie stosu,<br />

*ze_stosu - wskaźnik do zmiennej, której należy przypisać<br />

wartość zdjętą właśnie ze stosu,<br />

na_stos - liczba przeznaczona do zapisu na stos.<br />

Zajmijmy się teraz definicją konstruktora. Wywołując konstruktor<br />

w programie (deklarując użycie w programie struktury typu Stos)<br />

przekażemy mu jako argument ilość potrzebnej nam pamięci RAM w<br />

bajtach. Do przyporządkowznia pamięci na stercie dla naszego<br />

stosu wykorzystamy funkcję malloc().<br />

Stos::Stos(int n_RAM)<br />

//Konstruktor - def.<br />

{<br />

licznik = -1;<br />

bufor_danych = (int *) malloc(n_RAM);<br />

}<br />

Posługując się funkcją malloc() przyporządkowujemy buforowi<br />

danych, w oparciu o który organizujemy nasz obiekt (na razie w<br />

formie struktury) - stos 100 bajtów pamięci, co pozwala na<br />

- 272-

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

Saved successfully!

Ooh no, something went wrong!