The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

auto_ptr (3)
  • >> auto_ptr (3) ( Solaris man: Библиотечные вызовы )
  • 
                           Standard C++ Library
                 Copyright 1998, Rogue Wave Software, Inc.
    
    
    NAME
         auto_ptr
    
          - A simple, smart pointer class.
    
    
    
    SYNOPSIS
         #include <memory>
         template <class X> class auto_ptr;
    
    
    
    DESCRIPTION
         The template class auto_ptr holds onto  a  pointer  obtained
         via  new  and  deletes  that object when the auto_ptr object
         itself is destroyed (such  as  when  leaving  block  scope).
         auto_ptr   can  be  used  to  make  calls  to  operator  new
         exception-safe. The auto_ptr class has semantics  of  strict
         ownership:  an  object  may be safely pointed to by only one
         auto_ptr, so copying an  auto_ptr  copies  the  pointer  and
         transfers  ownership  to  the  destination if the source had
         already had ownership.
    
    
    
    INTERFACE
         template <class X> class auto_ptr {
         template <class Y> class auto_ptr_ref {
           public:
             const auto_ptr<Y>& p;
             auto_ptr_ref (const auto_ptr<Y>&);
         };
           public:
             typedef X element_type;
              // constructor/copy/destroy
    
             explicit auto_ptr (X* = 0) throw();
             auto_ptr (const auto_ptr<X>&) throw ();
             template <class Y>
               auto_ptr (const auto_ptr<Y>&) throw();
             void operator=(const auto_ptr<X>&) throw():
             template <class Y>
               void operator= (const auto_ptr<Y>&) throw();
              ~auto_ptr ();
              // members
    
             X& operator* () const throw();
             X* operator-> () const throw();
             X* get () const throw();
             X* release () throw();
             void reset (X*=0) throw();
             auto_ptr(auto_ptr_ref<X>) throw();
             template <class Y>
             operator auto_ptr_ref<Y>() throw();
             template <class Y>
             operator auto_ptr<Y>() throw();
          };
    
    
    
    TYPES
         template <class Y>
         class auto_ptr_ref;
    
    
            A private class template that holds  a  reference  to  an
            auto_ptr.  It  can only be constructed within an auto_ptr
            using a reference to  an  auto_ptr.  It  prevents  unsafe
            copying.
    
    
    
    CONSTRUCTORS
         explicit
         auto_ptr (X* p = 0);
    
    
            Constructs an object of class  auto_ptr<X>,  initializing
            the  held  pointer  to p, and acquiring ownership of that
            pointer. p must point to an object of class X or a  class
            derived from X for which delete p is defined and accessi-
            ble, or p must be a null pointer.
    
    
    
         auto_ptr (const auto_ptr<X>& a);
         template <class Y>
         auto_ptr (const auto_ptr<Y>& a);
    
    
            Constructs an object of class auto_ptr<X>, and copies the
            argument  a  to *this. If a owned the underlying pointer,
            then *this becomes the new owner of that pointer.
    
         auto_ptr (const auto_ptr_ref<X> r);
    
    
            Constructs an auto_ptr from an auto_ptr_ref.
    
    
    
    DESTRUCTORS
         ~auto_ptr ();
    
    
            Deletes the underlying pointer.
    
    
    
    OPERATORS
         void operator= (const auto_ptr<X>& a);
         template <class Y>
         void operator= (const auto_ptr<Y>& a);
    
    
            Copies the argument a to *this. If a owned the underlying
            pointer,  then  *this  becomes  the  new  owner  of  that
            pointer. If *this already  owned  a  pointer,  then  that
            pointer is deleted first.
    
    
    
         X&
         operator* () const;
    
    
            Returns a reference to the object to which the underlying
            pointer points.
    
    
    
         X*
         operator-> () const;
    
    
            Returns the underlying pointer.
    
    
    
         template <class Y>
         operator auto_ptr_ref<Y> ();
    
            Constructs an auto_ptr_ref from *this and returns it.
    
    
    
         template <class Y>
         operator auto_ptr<Y> ();
    
    
            Constructs a new auto_ptr using  the  underlying  pointer
            held  by  *this.  Calls  release()  on *this, so *this no
            longer possesses the pointer. Returns the new auto_ptr.
    
    
    
    MEMBER FUNCTIONS
         X*
         get () const;
    
    
            Returns the underlying pointer.
    
    
    
         X*
         release();
    
    
            Releases ownership of  the  underlying  pointer.  Returns
            that pointer.
    
    
    
         void
         reset(X* p)
    
    
            Sets the underlying pointer to p.  If  non-null,  deletes
            the old underlying pointer.
    
    
    
    EXAMPLE
            //
            // auto_ptr.cpp
            //
            #include <iostream>
            #include <memory>
           using namespace std;
            //
            // A simple structure.
            //
           struct X
            {
               X (int i = 0) : m_i(i) { }
               int get() const { return m_i; }
               int m_i;
            };
    
           int main ()
            {
               //
               // b will hold a pointer to an X.
               //
              auto_ptr<X> b(new X(12345));
               //
               // a will now be the owner of the underlying pointer.
               //
              auto_ptr<X> a = b;
               //
               // Output the value contained by
               // the underlying pointer.
               //
              cout << a->get() << endl;
               //
               // The pointer will be deleted when a is destroyed on
               // leaving scope.
               //
              return 0;
            }
    
         Program Output
    
    
    
         12345
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру