智能指针auto_ptr运用实例:移转拥有权的行为

智能指针auto_ptr运用实例:移转拥有权的行为

#include  < iostream >
#include 
< memory >
using   namespace  std;

/*  define output operator for auto_ptr
*  print object value or NULL
*/

template
< class  T >
ostream
&   operator <<  (ostream &  strm,  const  auto_ptr < T >&  p)
{
    
//  does p own an object ?
     if  (p. get ()  ==  NULL)
    {
        strm 
<<   " NULL " //  NO:print NULL
    }
    
else
    {
        strm 
<<   * p;      //  YES:print the object
    }

    
return  strm;
}

int  main()
{
    auto_ptr
< int >  p( new   int ( 42 ));
    auto_ptr
< int >  q;

    cout 
<<   " after initialization: "   <<  endl;
    cout 
<<   "  p:  "   <<  p  <<  endl;
    cout 
<<   "  q:  "   <<  q  <<  endl;

    q 
=  p;
    cout 
<<   " after assigning auto pointers: "   <<  endl;
    cout 
<<   "  p:  "   <<  p  <<  endl;
    cout 
<<   "  q:  "   <<  q  <<  endl;

    
* +=   13 //  change value of the object q owns
    p  =  q;
    cout 
<<    " after change and reassingnment: "   <<  endl;
    cout 
<<   "  p:  "   <<  p  <<  endl;
    cout 
<<   "  q:  "   <<  q  <<  endl;
}


输出结果:
after initialization:
 p: 42
 q: NULL
after assigning auto pointers:
 p: NULL
 q: 42
after change and reassingnment:
 p: 55
 q: NULL
请按任意键继续. . .




 

你可能感兴趣的:(智能指针auto_ptr运用实例:移转拥有权的行为)