С++ - язык, который изучается постепенно.СЕМАНТИКА ВЕДУЩИХ УКАЗАТЕЛЕЙ
                   Справочники Всё для создания сайта

Ссылки


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







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

Семантика ведущих указателей

При работе с умными указателями имеется один важный частный случай - когда два умных указателя не должны одновременно ссылаться на один объект. Между указателем и объектом, на который он ссылается, существует однозначное соответствие (за исключением особого случая умных указателей, ссылающихся на NULL). Если в программном дизайне действует такое ограничение, говорят, что реализуется семантика ведущих указателей (master pointers).

Конечно, можно просто объявить через местную газету, что указатели должны использоваться таким и только таким образом. А можно защитить ваших пользователей от самих себя и подкрепить семантические правила языковыми средствами C++. Если вы мудро выберете второй вариант, придется учесть следующее:

1. Указываемые объекты должны создаваться указателями в конструкторах.

2. Деструктор указателя должен удалять указываемый объект.

3. Конструктор копий должен создавать точную копию указываемого объекта.

4. Оператор присваивания operator= должен удалять текущий указываемый объект,

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

Кроме того, было бы разумно сделать еще две вещи:

5. Ограничить доступ к конструкторам класса указываемого объекта.

6. Создавать указатели с помощью производящих функций (factory functions).

Обе рекомендации будут подробно рассмотрены в последующих разделах. Прототип ведущего указателя, который мы собираемся воплотить, выглядит так:

template <class Type>

class MP {

private:

Type* t;

public:

6

86

MP(); // Создает указываемый объект

MP(const MP<Type>&); // Копирует указываемый объект

~MP(); // Удаляет указываемый объект

MP<Type>& operator=(const MP<Type>&); // Удаляет левосторонний объект,

// копирует правосторонний

Type* operator->() const;

};


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

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

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