Compartir a través de


Clase de CAutoPtr

Esta clase representa un objeto de puntero inteligente.

Nota importanteImportante

Esta clase y sus miembros no se pueden utilizar en las aplicaciones que se ejecutan en Windows en tiempo de ejecución.

template< 
typename T
>
class CAutoPtr

Parámetros

  • T
    el tipo de puntero.

Members

txda4x5t.collapse_all(es-es,VS.110).gifConstructores públicos

Name

Descripción

CAutoPtr::CAutoPtr

el constructor.

CAutoPtr::~CAutoPtr

El destructor.

txda4x5t.collapse_all(es-es,VS.110).gifMétodos públicos

Name

Descripción

CAutoPtr::Attach

Llame a este método para realizar la propiedad de un puntero existente.

CAutoPtr::Detach

Llame a este método para liberar la propiedad de un puntero.

CAutoPtr::Free

Llame a este método para eliminar un objeto señala CAutoPtr.

txda4x5t.collapse_all(es-es,VS.110).gifOperadores públicos

Name

Descripción

CAutoPtr::operator T*

El operador de conversión.

CAutoPtr::operator =

el operador de asignación.

CAutoPtr::operator - >

El operador de puntero a miembro.

txda4x5t.collapse_all(es-es,VS.110).gifMiembros de datos públicos

Name

Descripción

CAutoPtr::m_p

La variable miembro de datos de puntero.

Comentarios

Esta clase proporciona métodos para crear y administrar un puntero inteligente, que ayuda a protegerse frente a pérdidas de memoria automáticamente libera los recursos cuando está fuera de ámbito.

Además, el constructor de copias de entity_CODECAutoPtr y el operador de asignación transfiere la propiedad del puntero, copiando el puntero de origen al puntero de destino y estableciendo el puntero de origen en NULL.Por consiguiente imposible obtener dos objetos cada uno de CAutoPtr que almacena el mismo puntero, y esto reduce la posibilidad de eliminar el mismo puntero dos veces.

CAutoPtr también simplifica la creación de colecciones de punteros.En lugar de derivar una clase de colección y de reemplazar el destructor, es más fácil crear una colección de objetos CAutoPtr .Cuando se elimina la colección, los objetos de CAutoPtr saldrán de ámbito y automáticamente se eliminarán.

CHeapPtr y las variantes funcionan igual que CAutoPtr, salvo que asignan y liberan memoria mediante diferente pila funciona en lugar de C++ nuevo y operadores de borrar .CAutoVectorPtr es similar a CAutoPtr, la única diferencia es que utiliza vector new[] y vector delete[] para asignar y liberar memoria.

Vea también CAutoPtrArray y CAutoPtrList cuando las matrices o listas de punteros inteligentes se requieren.

Requisitos

encabezado: atlbase.h

Ejemplo

// A simple class for demonstration purposes

class MyClass 
{
   int iA;
   int iB;
public:
   MyClass(int a, int b);
   void Test();
};

MyClass::MyClass(int a, int b)
{
   iA = a;
   iB = b;
}

void MyClass::Test()
{
   ATLASSERT(iA == iB);
}

// A simple function

void MyFunction(MyClass* c)
{
   c->Test();
}

int UseMyClass()
{
   // Create an object of MyClass.
   MyClass *pMyC = new MyClass(1, 1);

   // Create a CAutoPtr object and have it take
   // over the pMyC pointer by calling Attach.
   CAutoPtr<MyClass> apMyC;
   apMyC.Attach(pMyC);

   // The overloaded -> operator allows the 
   // CAutoPtr object to be used in place of the pointer.
   apMyC->Test();

   // Assign a second CAutoPtr, using the = operator.
   CAutoPtr<MyClass> apMyC2;
   apMyC2 = apMyC;

   // The casting operator allows the
   // object to be used in place of the pointer.
   MyFunction(pMyC);
   MyFunction(apMyC2);

   // Detach breaks the association, so after this
   // call, pMyC is controlled only by apMyC.
   apMyC2.Detach();

   // CAutoPtr destroys any object it controls when it
   // goes out of scope, so apMyC destroys the object 
   // pointed to by pMyC here.
   return 0;
}

Vea también

Referencia

Clase de CHeapPtr

Clase de CAutoVectorPtr

Otros recursos

Información general de la clase ATL