Udostępnij za pośrednictwem


Klasa CAutoPtr

Ta klasa reprezentuje obiekt inteligentny wskaźnika.

Ważna uwagaWażne

W aplikacjach, które są wykonywane w Windows Runtime nie można użyć tej klasy i jej członków.

template< 
typename T
>
class CAutoPtr

Parametry

  • T
    Typ wskaźnika.

Członkowie

txda4x5t.collapse_all(pl-pl,VS.110).gifPubliczne konstruktory

Nazwa

Opis

CAutoPtr::CAutoPtr

Konstruktor.

CAutoPtr:: ~ CAutoPtr

Destruktor.

txda4x5t.collapse_all(pl-pl,VS.110).gifMetody publiczne

Nazwa

Opis

CAutoPtr::Attach

Wywołanie tej metody, aby przejąć na własność istniejącego wskaźnika.

CAutoPtr::Detach

Wywołanie tej metody, aby zwolnić własności wskaźnika.

CAutoPtr::Free

Wywołanie tej metody, aby usunąć obiekt wskazywanej przez CAutoPtr.

txda4x5t.collapse_all(pl-pl,VS.110).gifPodmioty publiczne

Nazwa

Opis

CAutoPtr::operator T *

Operator rzutowania.

CAutoPtr::operator =

Operator przypisania.

CAutoPtr::operator - >

Operator wskaźnik do Państwa.

txda4x5t.collapse_all(pl-pl,VS.110).gifPubliczne danych członków

Nazwa

Opis

CAutoPtr::m_p

Wskaźnik zmienna członka danych.

Uwagi

Ta klasa zapewnia metody tworzenia i zarządzania smart pointer pomoże chronić przed przecieki pamięci przez automatyczne zwalnianie zasobów, gdy znajdzie się ona poza zakresem.

Dalsze, CAutoPtrKonstruktor kopiujący i przypisanie operator przeniesienia własności wskaźnika, kopiowanie wskaźnika źródła wskaźnik przeznaczenia i ustawienie wskaźnika źródła na NULL.Jest zatem niemożliwe dwa CAutoPtr każdego ten sam wskaźnik przechowywanie obiektów i zmniejsza to możliwość usuwania samego wskaźnik dwa razy.

CAutoPtrupraszcza tworzenie kolekcji wskaźników.Wynikające z klasy kolekcji i przesłanianie destruktor, jest prostsze Kolekcja CAutoPtr obiektów.Po usunięciu kolekcji CAutoPtr obiekty będą wykracza poza zakres i automatycznie usuwać same.

CHeapPtr i warianty pracować w taki sam sposób jak CAutoPtr, z wyjątkiem, że przydzielić i zwolnić pamięć sterty różnych funkcji zamiast C++ Nowy i usunąć operatorów.CAutoVectorPtr jest podobny do CAutoPtr, jedyną różnicą jest, że używa [] nowe vector i vector usunąć [ przydzielić i zwolnić pamięć.

Zobacz też CAutoPtrArray i CAutoPtrList gdy wymagane są tablicami lub list inteligentne kursory.

Wymagania

Nagłówek: atlbase.h

Przykład

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

Zobacz też

Informacje

Klasa CHeapPtr

Klasa CAutoVectorPtr

Inne zasoby

Omówienie klasy ATL