Przykład:
int *i = new int; auto_ptr<int> x(i); auto_ptr<int> y;
y = x;
cout << x.get() << endl; cout << y.get() << endl;
Ten kod wypisze dla pierwszego obiektu auto_ptr adres NULL i inny adres dla drugiego, pokazując, że obiekt źródłowy utracił referencje podczas przypisania (=). Nie powinno się wykonywać operacji delete na źródłowym wskaźniku i, bo zostanie on usunięty przez drugi auto_ptr.
Trzeba zauważyć, że obiekt wskazywany przez auto_ptr jest usuwany przez operator delete; oznacza to że auto_ptr można używać tylko dla wskaźników uzyskanych przez operator new. Wyłącza to wskaźniki zwracane przez malloc/calloc/realloc i operator new[].
Przypisy
Kategoria:C++