Класс CAutoVectorPtr
Этот класс представляет объект интеллектуального указателя с помощью векторных новых и удаленных операторов.
Внимание
Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.
Синтаксис
template<typename T>
class CAutoVectorPtr
Параметры
T
Тип указателя.
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CAutoVectorPtr::CAutoVectorPtr | Конструктор. |
CAutoVectorPtr::~CAutoVectorPtr | Деструктор |
Открытые методы
Имя | Описание |
---|---|
CAutoVectorPtr::Allocate | Вызовите этот метод, чтобы выделить память, необходимую массиву объектов, на которые указывает CAutoVectorPtr . |
CAutoVectorPtr::Attach | Вызовите этот метод для владения существующим указателем. |
CAutoVectorPtr::D etach | Вызовите этот метод, чтобы освободить владение указателем. |
CAutoVectorPtr::Free | Вызовите этот метод для удаления объекта, на который указывает объект CAutoVectorPtr . |
Открытые операторы
Имя | Описание |
---|---|
CAutoVectorPtr::operator T * | Оператор приведения. |
CAutoVectorPtr::operator = | Оператор присваивания . |
Открытые члены данных
Имя | Описание |
---|---|
CAutoVectorPtr::m_p | Переменная элемента данных указателя. |
Замечания
Этот класс предоставляет методы для создания интеллектуального указателя и управления ими, что поможет защититься от утечки памяти, автоматически освобождая ресурсы при выходе из области. CAutoVectorPtr
ПохожеCAutoPtr
, единственное различие заключается в том, что используется vector new[]
CAutoVectorPtr
и выделяется и vector delete[]
освобождает память вместо C++ new
и delete
операторов. См. статью CAutoVectorPtrElementTraits , если необходимы классы коллекций CAutoVectorPtr
.
Пример использования интеллектуального класса указателя см. в CAutoPtr.
Требования
Заголовок: atlbase.h
CAutoVectorPtr::Allocate
Вызовите этот метод, чтобы выделить память, необходимую массиву объектов, на которые указывает CAutoVectorPtr
.
bool Allocate(size_t nElements) throw();
Параметры
nElements
Количество элементов в массиве.
Возвращаемое значение
Возвращает значение true, если память успешно выделена, значение false при сбое.
Замечания
В сборках отладки произойдет сбой утверждения, если переменная члена CAutoVectorPtr::m_p указывает на существующее значение, то есть не равно NULL.
CAutoVectorPtr::Attach
Вызовите этот метод для владения существующим указателем.
void Attach(T* p) throw();
Параметры
p
Объект CAutoVectorPtr
будет иметь владение этим указателем.
Замечания
CAutoVectorPtr
Когда объект берет на себя владение указателем, он автоматически удаляет указатель и все выделенные данные при выходе из области. Если вызывается CAutoVectorPtr::D etach , программист снова несет ответственность за освобождение выделенных ресурсов.
В сборках отладки произойдет сбой утверждения, если переменная члена CAutoVectorPtr::m_p указывает на существующее значение, то есть не равно NULL.
CAutoVectorPtr::CAutoVectorPtr
Конструктор.
CAutoVectorPtr() throw();
explicit CAutoVectorPtr(T* p) throw();
CAutoVectorPtr(CAutoVectorPtr<T>& p) throw();
Параметры
p
Существующий указатель.
Замечания
Объект CAutoVectorPtr
можно создать с помощью существующего указателя, в этом случае он передает права владения указателем.
CAutoVectorPtr::~CAutoVectorPtr
Деструктор
~CAutoVectorPtr() throw();
Замечания
Освобождает все выделенные ресурсы. Вызывает CAutoVectorPtr::Free.
CAutoVectorPtr::D etach
Вызовите этот метод, чтобы освободить владение указателем.
T* Detach() throw();
Возвращаемое значение
Возвращает копию указателя.
Замечания
Освобождает владение указателем, задает переменную члена CAutoVectorPtr::m_p значение NULL и возвращает копию указателя. После вызова Detach
программист должен освободить все выделенные ресурсы, над которыми CAutoVectorPtr
объект мог ранее нести ответственность.
CAutoVectorPtr::Free
Вызовите этот метод для удаления объекта, на который указывает объект CAutoVectorPtr
.
void Free() throw();
Замечания
Объект, на который указывает CAutoVectorPtr
освобожден, и переменная члена CAutoVectorPtr::m_p имеет значение NULL.
CAutoVectorPtr::m_p
Переменная элемента данных указателя.
T* m_p;
Замечания
Эта переменная-член содержит сведения указателя.
CAutoVectorPtr::operator =
Оператор присваивания .
CAutoVectorPtr<T>& operator= (CAutoVectorPtr<T>& p) throw();
Параметры
p
Указатель.
Возвращаемое значение
Возвращает ссылку на CAutoVectorPtr< T >.
Замечания
Оператор присваивания отсоединяет CAutoVectorPtr
объект от любого текущего указателя и присоединяет новый указатель, p, на его месте.
CAutoVectorPtr::operator T *
Оператор приведения.
operator T*() const throw();
Замечания
Возвращает указатель на тип данных объекта, определенный в шаблоне класса.