Sdílet prostřednictvím


Třída CAutoPtr

Tato třída představuje ukazatel inteligentní objekt.

Důležitá poznámkaDůležité

Třídy a jejích členů nelze použít v aplikacích, které spustit v modulu Runtime v systému Windows.

template< 
typename T 
> 
class CAutoPtr

Parametry

  • T
    Typ ukazatele.

Členy

Veřejné konstruktory

Název

Description

CAutoPtr::CAutoPtr

Konstruktor.

CAutoPtr:: ~ CAutoPtr

Destruktoru.

Veřejné metody

Název

Description

CAutoPtr::Attach

Volání této metody převzít vlastnictví stávající ukazatel.

CAutoPtr::Detach

Volání této metody uvolnění vlastnictví ukazatele.

CAutoPtr::Free

Volání této metody odstranit objekt odkazuje CAutoPtr .

Veřejné operátory

Název

Description

CAutoPtr::operator T *

Operátor přetypování.

CAutoPtr::operator =

Operátor přiřazení.

CAutoPtr::operator - >

Operátor ukazatele na člen.

Veřejné datové členy

Název

Description

CAutoPtr::m_p

Ukazatel data členské proměnné.

Poznámky

Tato třída poskytuje metody pro vytváření a správu inteligentní ukazatel, který pomůže chránit proti nevracení paměti automaticky uvolnit prostředky při spadá mimo rozsah.

Dále, CAutoPtr Kopírovat konstruktor a přiřazení operátor převést vlastnictví ukazatele, kopírování ukazatelem zdroje na cílový ukazatel a nastavení ukazatelem zdroje na hodnotu NULL.Je možné mít dva CAutoPtr každý stejný ukazatel ukládání objektů a tím snížíte možnost odstranění dvakrát stejný ukazatel.

CAutoPtrtaké zjednodušuje vytváření kolekce ukazatele.Kolekce třídy odvozené a potlačení se objekt, je jednodušší vytvořit kolekci CAutoPtr objektů.Při odstranění kolekce CAutoPtr objektů se dostanou mimo rozsah a automaticky odstranit sami.

CHeapPtr a varianty pracovat stejným způsobem jako CAutoPtr , s výjimkou, že přidělit a uvolnit paměť pomocí funkce různých haldy místo C++ nové a Odstranit operátory.CAutoVectorPtr je podobný CAutoPtr , přičemž jediným rozdílem je, že používá vector nové [ a vector odstranit [ přidělení a uvolnění paměti.

Viz také CAutoPtrArray a CAutoPtrList při polí nebo seznamů inteligentní ukazatele jsou nutné.

Požadavky

Záhlaví: atlbase.h

Příklad

// 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;
}

Viz také

Referenční dokumentace

Třída CHeapPtr

Třída CAutoVectorPtr

Další zdroje

Přehled třídy ATL