Compartilhar via


Classe CAutoVectorPtr

Essa classe representa um objeto de ponteiro inteligente usando operadores de vetor novos e de exclusão.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

template<typename T>
class CAutoVectorPtr

Parâmetros

T
O tipo de ponteiro.

Membros

Construtores públicos

Nome Descrição
CAutoVectorPtr::CAutoVectorPtr O construtor .
CAutoVectorPtr::~CAutoVectorPtr O destruidor.

Métodos públicos

Nome Descrição
CAutoVectorPtr::Allocate Chame esse método para alocar a memória exigida pela matriz de objetos apontados por CAutoVectorPtr.
CAutoVectorPtr::Attach Chame esse método para assumir a propriedade de um ponteiro existente.
CAutoVectorPtr::Detach Chame esse método para liberar a propriedade de um ponteiro.
CAutoVectorPtr::Free Chame esse método para excluir um objeto apontado por um CAutoVectorPtr.

Operadores públicos

Nome Descrição
CAutoVectorPtr::operator T * O operador de conversão.
CAutoVectorPtr::operator = O operador de atribuição.

Membros de Dados Públicos

Nome Descrição
CAutoVectorPtr::m_p A variável de membro de dados de ponteiro.

Comentários

Essa classe fornece métodos para criar e gerenciar um ponteiro inteligente, o que ajudará na proteção contra perda de memória liberando recursos automaticamente quando ela ficar fora do escopo. CAutoVectorPtr é semelhante a CAutoPtr, a única diferença é que CAutoVectorPtr usa vector new[] e vector delete[] aloca e libera memória em vez do dos operadores new e delete do C++. Confira CAutoVectorPtrElementTraits se as classes de coleção CAutoVectorPtr forem necessárias.

Confira CAutoPtr para obter um exemplo de como usar uma classe de ponteiro inteligente.

Requisitos

Cabeçalho: atlbase.h

CAutoVectorPtr::Allocate

Chame esse método para alocar a memória exigida pela matriz de objetos apontados por CAutoVectorPtr.

bool Allocate(size_t nElements) throw();

Parâmetros

nElements
O número de elementos na matriz.

Valor de retorno

Retornará true se a memória for alocada com êxito, false se falhar.

Comentários

Em builds de depuração, ocorrerá uma falha de asserção se a variável de membro CAutoVectorPtr::m_p atualmente apontar para um valor existente; ou seja, não é igual a NULL.

CAutoVectorPtr::Attach

Chame esse método para assumir a propriedade de um ponteiro existente.

void Attach(T* p) throw();

Parâmetros

p
O objeto CAutoVectorPtr assumirá a propriedade desse ponteiro.

Comentários

Quando um objeto CAutoVectorPtr assume a propriedade de um ponteiro, ele exclui automaticamente o ponteiro e todos os dados alocados quando ele sai do escopo. Se CAutoVectorPtr::Detach for chamado, o programador será novamente responsável por liberar todos os recursos alocados.

Em builds de depuração, ocorrerá uma falha de asserção se a variável de membro CAutoVectorPtr::m_p atualmente apontar para um valor existente; ou seja, não é igual a NULL.

CAutoVectorPtr::CAutoVectorPtr

O construtor .

CAutoVectorPtr() throw();
explicit CAutoVectorPtr(T* p) throw();
CAutoVectorPtr(CAutoVectorPtr<T>& p) throw();

Parâmetros

p
Um ponteiro existente.

Comentários

O objeto CAutoVectorPtr pode ser criado usando um ponteiro existente. Nesse caso, ele transfere a propriedade do ponteiro.

CAutoVectorPtr::~CAutoVectorPtr

O destruidor.

~CAutoVectorPtr() throw();

Comentários

Libera todos os recursos alocados. Chama CAutoVectorPtr::Free.

CAutoVectorPtr::Detach

Chame esse método para liberar a propriedade de um ponteiro.

T* Detach() throw();

Valor de retorno

Retorna uma cópia do ponteiro.

Comentários

Libera a propriedade de um ponteiro, define a variável de membro CAutoVectorPtr::m_p como NULL e retorna uma cópia do ponteiro. Depois de chamar Detach, cabe ao programador liberar todos os recursos alocados sobre os quais o objeto CAutoVectorPtr pode ter assumido anteriormente a responsabilidade.

CAutoVectorPtr::Free

Chame esse método para excluir um objeto apontado por um CAutoVectorPtr.

void Free() throw();

Comentários

O objeto apontado pelo CAutoVectorPtr é liberado e a variável de membro CAutoVectorPtr::m_p é definida como NULL.

CAutoVectorPtr::m_p

A variável de membro de dados de ponteiro.

T* m_p;

Comentários

Essa variável de membro contém as informações do ponteiro.

CAutoVectorPtr::operator =

O operador de atribuição.

CAutoVectorPtr<T>& operator= (CAutoVectorPtr<T>& p) throw();

Parâmetros

p
Um ponteiro.

Valor de retorno

Retorna uma referência a um CAutoVectorPtr< T >.

Comentários

O operador de atribuição desanexa o objeto CAutoVectorPtr de qualquer ponteiro atual e anexa o novo ponteiro, p, em seu lugar.

CAutoVectorPtr::operator T *

O operador de conversão.

operator T*() const throw();

Comentários

Retorna um ponteiro para o tipo de dados de objeto definido no modelo de classe.

Confira também

Classe CAutoPtr
Visão geral da aula