071

071



return IntelWskPodst<T>::operator=(pt);

}

T *operator->() const

{

return m_pt;

}

};

Podobnie jak inteligentne wskaźniki do typów wbudowanych, inteligentne wskaźniki do obiektów automatycznie usuwają wskazywaną przez siebie pamięć podczas usuwania samych wskaźników. Klasa w podanym przykładzie jest pochodną klasy IntelWskPodst ze wskazówki 58. Główna różnica polega na tym, że klasa pokazana tutaj jest wzbogacona o obsługę operatora ->. Jeśli spróbujemy użyć jej z typem wbudowanym, takim jak int, to kompilator zgłosi błąd składniowy, gdyż dla takich typów operator ~> nie jest dostępny. Ten komunikat błędu stanowi jeszcze jeden poziom zabezpieczenia przed niepoprawnym użyciem.

Przykład: ObjectSmartPointer w pliku smartptr.h

Własne alokatory pamięci i inteligentne wskaźniki

unikanie awarii

Klasy inteligentnych wskaźników pokazane w pliku smartptr.h automatycznie usuwają wskazywaną pamięć wraz z usunięciem samych wskaźników. Osiąga się to, wywołując polecenie delete w destruktorze klasy. Działa to jednak tylko wówczas, gdy pamięć związana ze wskaźnikiem została przydzielona operacją new. Należy się upewnić, że polecenie usunięcia pamięci odpowiada poleceniu jej przydziału. Na przykład jeśli pamięć została przydzielona przez polecenie HeapAlloc, to musimy ją zwolnić za pomocą polecenia HeapFree.

Dbanie o rozmiar buforów

unikanie awarii; unikanie nieoczekiwanych wyników

Przed

const Literał &operator=(const char *pch)

{

strcpy(m„rgch, pch); return *thi$:


Wyszukiwarka

Podobne podstrony:
070 TIF virtua! ~lntelWskPodst(){ rf(m_pt) delete m_pt; m_pt = NULL;} T &operator*() const{ retu
140 TIF char *m_pch; public: int operator==(const Napis& napis) const{ return(strcmp(m_pch, napi
227 TIF const String& operator+=(const String& string){ Append(string.m_pch, string.m_cch);
Po const Litera! &operator=(const char *pch){ strncpy(m_rgch, pch, sizeof(m_rgch)-2); m_rg ch [s
{ riOnce, riOneOrMore, riZeroOrMore, riMinMax, // Maksymalna liczba powtórzeń operatora, const
const Literał &operator=(const char *pch){ // Wskazówka 42. // Wskazówka 43. // Wskazówka
058 TIF Operator dodawania wprowadza duży narzut . pisanie czytelnego kodu Kod źródłowy Napis operat

więcej podobnych podstron