auto_ptr
1.auto_ptr移转拥有权:
#include <iostream>
#include <memory>
using namespace std;
template <class T>
ostream & operator<<(ostream& strm,const auto_ptr<T>& p)
{
if (p.get()==NULL)
{
strm<<"NULL";
}
else
{
strm<<*p;
}
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;
*q+=13;
p=q;
cout<<"after change and reassignment:"<<endl;
cout<<"p:"<<p<<endl;
cout<<"q:"<<q<<endl;
system("pause");
}
2.const auto_ptr特性:
#include <iostream>
#include <memory>
using namespace std;
template <class T>
ostream & operator<<(ostream& strm,const auto_ptr<T>& p)
{
if (p.get()==NULL)
{
strm<<"NULL";
}
else
{
strm<<*p;
}
return strm;
}
int main()
{
auto_ptr<int> p(new int(42));
auto_ptr<int> q(new int(0));
auto_ptr<int> r;
cout<<"after initialization:"<<endl;
cout<<"p:"<<p<<endl;
cout<<"q:"<<q<<endl;
cout<<"r:"<<r<<endl;
*q=*p;
*p=-77;
cout<<"after assigning auto pointers:"<<endl;
cout<<"p:"<<p<<endl;
cout<<"q:"<<q<<endl;
cout<<"r:"<<r<<endl;
system("pause");
}
浙公网安备 33010602011771号