070 TIF

070 TIF



virtua! ~lntelWskPodst()

{

rf(m_pt)

delete m_pt; m_pt = NULL;

}

T &operator*() const

{

return *m_pt;

}

Pt!operator=(T *pt)

{

mpt = pt;

return m_pt;

}

};

Inteligentne wskaźniki automatycznie zwalniają wskazywaną przez siebie pamięć podczas ich usuwania, pomagając w uniknięciu częstego powodu strat pamięci. Tworzenie takich wskaźników jest łatwe — wystarczy skorzystać z szablonów. Może się zdawać, że jest to nieoszczędność pamięci. Okazuje się jednak, że koszt jest tylko nieznacznie większy, a korzyści są warte tej zmiany.

Dla lepszego zabezpieczenia przed stratami pamięci warto połączyć użycie inteligentnych składników ze zliczaniem odwołań.

Przykład: BaseSmartPointer w pliku smartptr.h

Inteligentne wskaźniki do obiektów

unikanie strat pamięci

Kod źródłowy

template <class T> class IntelWskObiekt: public InteIWskPodst <T>

{

public:

IntelWskObiektfT* pt=NULL) : lntelWskPodst<T>(pt)

{

}

T* operator=(T *pt)


Wyszukiwarka

Podobne podstrony:
return IntelWskPodst<T>::operator=(pt);} T *operator->() const{ return m_pt;} }; Podobnie
118 TIF ~Napis(void){ if(m_pch) delete m_pch;} }; Dostęp do konstruktorów można kontrolować zamienia
167 TIF if(m_pstrumień->DajTypStrumienia() != typstrumieniaPlik){ delete m_pstrumień; m_pstrumień
063 TIF $ŁOW::~SŁOW() { if(m_pstrumień) delete m_pstrumieri; } Przed zwolnieniem pamięci należy się
121 TIF m_pch = NULL;} Napis(const Napis &napis): m_cchTest(10){ lnicjNapis(napis.m_pch,
140 TIF char *m_pch; public: int operator==(const Napis& napis) const{ return(strcmp(m_pch, napi

więcej podobnych podstron