С++ - язык, который изучается постепенно.Прототип шаблона ведущего указателя .
                   Справочники Всё для создания сайта

Ссылки


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







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

Прототип шаблона ведущего указателя

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

1. Он должен иметь безаргументный конструктор.

2. Он должен либо перегружать конструктор копий, либо предоставленный компилятором

конструктор копий по умолчанию должен подходить для использования в шаблоне ведущего указателя.

Если хотя бы одно из этих требований не выполняется, придется внести изменения в класс

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

template <class Type>

class MP {

private:

Type* t;

public:

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

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

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

MP<Type>& operator=(const MP<Type>&);

Type* operator->() const;

};

template <class Type>

inline MP<Type>::MP() : t(new Type)

{}

template <class Type>

inline MP<Type>::MP(const MP<Type>& mp) : t(new Type(*(mp.t)))

{}

template <class Type>

inline MP<Type>::~MP()

{

delete t;

}

template <class Type>

inline MP<Type>& MP<Type>::operator=(const MP<Type>& mp)

{

if (this != &mp) {

delete t;

t = new Type(*(mp.t));

}

return *this;

}

template <class Type>

inline Type* MP<Type>::operator->() const

{

return t;

}


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

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

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