Freigeben über


CAutoPtr-Klasse

Diese Klasse stellt ein Objekt des intelligenten Zeigermechanismus dar.

Wichtiger HinweisWichtig

Diese Klasse und ihre Member können in Anwendungen nicht verwendet werden, die in der Windows Runtime ausführen.

template< 
typename T
>
class CAutoPtr

Parameter

  • T
    Der Zeigertyp.

Mitglieder

txda4x5t.collapse_all(de-de,VS.110).gifÖffentliche Konstruktoren

Name

Description

CAutoPtr::CAutoPtr

Der -Konstruktor.

CAutoPtr::~CAutoPtr

Der Destruktor.

txda4x5t.collapse_all(de-de,VS.110).gifÖffentliche Methoden

Name

Description

CAutoPtr::Attach

Rufen Sie diese Methode auf, um den Besitz einer vorhandenen Zeiger zu akzeptieren.

CAutoPtr::Detach

Rufen Sie diese Methode auf, um den Besitz eines Zeigers freizugeben.

CAutoPtr::Free

Rufen Sie diese Methode auf, um ein Objekt zu löschen, das von zu CAutoPtr gezeigt wird.

txda4x5t.collapse_all(de-de,VS.110).gifÖffentliche Operatoren

Name

Description

CAutoPtr::operator T*

Der Umwandlungsoperator.

CAutoPtr::operator =

Der Zuweisungsoperator.

CAutoPtr::operator - >

Der Operator Zeiger-auf-Member.

txda4x5t.collapse_all(de-de,VS.110).gifÖffentliche Datenmember

Name

Description

CAutoPtr::m_p

Die Zeigerdatenmembervariable.

Hinweise

Diese Klasse stellt Methoden zum Erstellen und Verwalten eines intelligenten Zeigermechanismus bereit, der wird verhindert, dass Speicherverluste schützen, indem automatisch Ressourcen freigibt, wenn er außerhalb des gültigen Bereichs liegt.

Darüber hinaus übertragen der Kopierkonstruktor und Zuweisungsoperator von CAutoPtr den Besitz des Zeigers, kopieren den Quellzeiger zum Zielzeiger und legen den Quellzeiger auf NULL fest.Es ist daher nicht möglich, zwei CAutoPtr-Objekte jedes zu verfügen, die den gleichen Zeiger speichert, und dieses reduziert die Möglichkeit von den gleichen Zeiger zweimal löschen.

CAutoPtr vereinfacht auch die Erstellung von Auflistungen Zeiger.Anstatt, eine Auflistungsklasse berechnen und den Destruktor zu überschreiben, ist es einfacher, eine Auflistung von Objekten CAutoPtr auszuführen.Wenn die Auflistung gelöscht wird, CAutoPtr verlassen die Objekte im Bereich löschen und sich automatisch.

CHeapPtr und Varianten funktionieren auf die gleiche Weise wie CAutoPtr, außer dass sie belegen und geben Arbeitsspeicher mit verschiedenen Heapfunktionen statt C++ new und delete-Operatoren frei.CAutoVectorPtr ist zu CAutoPtr, der ähnlich, der einzige Unterschied ist, dass es vector new[] und vector delete[] verwendet, um Arbeitsspeicher reserviert und freigegeben.

Siehe auch CAutoPtrArray und CAutoPtrList, wenn Arrays oder Listen von intelligenten Zeiger erforderlich sind.

Anforderungen

Header: atlbase.h

Beispiel

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

Siehe auch

Referenz

CHeapPtr-Klasse

CAutoVectorPtr-Klasse

Weitere Ressourcen

ATL-Klassenübersicht