200 TIF

200 TIF



Inteligentne wskaźniki to bardzo użyteczne stworzenia. Inteligentny wskaźnik jest klasą utworzoną z szablonu, która automatycznie dba o usuwanie pamięci. Gdy klasa traci zasięg, wówczas jest usuwana również przydzielona pamięć. Już nigdy więcej niekontrolowanych strat pamięci.

Inteligentne wskaźniki opierają się na bardzo łatwym pomyśle. Tworzymy klasy inteligentnych wskaźników na bazie szablonu, dzięki czemu można utworzyć wskaźniki do dowolnego typu.

Deklaracja inteligentnego wskaźnika przebiega w ten sam sposób, co deklaracja zwykłego wskaźnika. Tylko zamiast kodu:

int *pi;

piszemy kod:

BaseSmartPointer<int> pi;

W przeciwieństwie do zwykłego wskaźnika, inteligentny wskaźnik jest obiektem. Gdy zatem zmienna lokalna wychodzi poza zasięg, wówczas jest wywoływany destruktor klasy. Destruktor inteligentnego wskaźnika oczyszcza wskazywaną pamięć, jak widać w podanym kodzie.

virtual ~BaseSmartPointer()

{

if(m_pt)

delete m_pt; m_pt=NULL;

}

Utworzyliśmy dwie klasy inteligentnych wskaźników. Pierwsza klasa, BaseSmart-Pointer, jest przeznaczona dla typów wbudowanych takich jak int, float itp. Nie obsługuje ona operatora dostępu (->). Druga klasa, ObjectSmartPointer, jest pochodną klasy BaseSmartPointer i już zawiera operator dostępu (->).

Pliki

Dalej podano cały plik z kodem inteligentnych wskaźników, smartptr.h jest plikiem nagłówkowym, a smartptr.cpp jest plikiem kodu. Liczby w komentarzach oznaczają numery wskazówek z części I. Pliki te i odpowiadający im plik projektu Visual C++ można znaleźć w folderze smartptr na CD-ROM-ie dołączonym do książki.


Wyszukiwarka

Podobne podstrony:
189 TIF Zatrzymywanie w wypadku zmiany danych 156 jak to zrobićCzynności Jest to bardzo użyteczna te
130 2 11) Ostrze piły (Hachsaw Blade) 12) Szablony (Stencils Templates) Jest to bardzo użyteczne nar
Teoria normatywna Problemy z pozytywizmem: 0 Jest to bardzo wąska definicja tego, czym jest
Telewizja edukacyjna - mgr Magda Maziarz Telewizja edukacyjna to bardzo szeroki temat. Kiedy TV jest
Scan0067 tif .1 ł —    Ja Józwie pomagam, mnie to bardzo bawi — za-szczebiotała. —
skany044 5 wsteczną (rys.5.5). Jest to zatem odwrócenie funkcji złącza - bardzo użyteczne w detekcji
CCF20090523028 tif KARL R. POPPER Popper: Nie, nie powiedziałbym. To jedna z moich podstawowych tez
CCF20091006015 tif inteligencją, drugi głupotą (Witwicki, 1925: 1,7). Pociągałoby to za sobą ■ subi
Pole grawitacyjne Chociaż pole jest pojęciem abstrakcyjnym to jest bardzo użyteczne i znacznie upras
DSC00806 • fmrnśmnak pfjslćw To mm być iwjradcpśwejsa (a przy tym bardzo użyteczna) część *

więcej podobnych podstron