С++ - язык, который изучается постепенно.ГЛАВА 14. Дескрипторы с подсчетом ссылок
                   Справочники Всё для создания сайта

Ссылки


Home
Бизнес
Справочники
Советы







Материалы книги получены с http://www.itlibitum.ru/

Дескрипторы с подсчетом ссылок

На сцену выходит нечто новое: дескриптор (handle) с подсчетом ссылок. По отношению к шаблону CMP он станет тем же, чем CP был для RefCount, - то есть он автоматически вызывает функции Grab() и Release() в своих конструкторах, деструкторе и операторе =.

template <class Type>

class CH { // "Дескриптор с подсчетом ссылок"

private:

CMP<Type>* pointee;

public:

CH(CMP<Type>* p) : pointee(p) { pointee->Grab(); }

CH(const CH<Type>& ch) : pointee(ch.pointee) { pointee->Grab(); }

~CH() { pointee->Release(); }

CH<Type>& operator=(const CH<Type>& ch)

{

if (this == &ch) return *this;

if (pointee == ch.pointee) return *this;

pointee->Release();

pointee = ch.pointee;

pointee->Grab();

return *this;

}

CMP<Type> operator->() { return *pointee; }

};

Если использовать дескрипторы в сочетании с ведущими указателями, можно выбрать, для каких экземпляров класса следует подсчитывать ссылки, а какие экземпляры должны управляться другим способом.


Назад    Содержание    Далее    

Home  Создание сайтов  Учебник по записи CD  Справочник Web дизайнера Самоучитель IE PHP и MySQL Компьютерные сети С++ E-mail me

Copyright 2007. Климов Александр. All Right Reserved.
Hosted by uCoz