Материалы книги получены с http://www.itlibitum.ru/
Дескрипторы, повсюду дескрипторы
Одна из стратегий уплотнения и сборки мусора в С++, которая заимствует кое-что из динамических языков - ссылаться на все объекты только через дескрипторы.
class Foo {
private:
H<Bar> bar; // Дескриптор Bar
public:
H<Bar> GetBar() { return bar; }
};
Здесь H - шаблон дескриптора (вроде тех, которые мы рассматривали в предыдущих главах). Каждый H<Bar> представляет собой умный указатель на ведущий указатель на Bar. Функции, косвенно открывающие переменные класса (такие как GetBar()), возвращают копию дескриптора. Все ведущие указатели (по крайней мере, в этой версии) живут в специальном пространстве памяти, поэтому найти их несложно.
Ниже описывается одна из несложных реализаций уплотнения с применением дескрипторов. Конечно, возможны и другие варианты.
Назад Содержание Далее
|