c++ stl--atuo_ptr

来源:互联网 发布:splice视频编辑软件 编辑:程序博客网 时间:2024/04/30 15:30
#include <memory>#include <iostream>using namespace std;class A{void get(){}};template <class T>void bad_print(const std::auto_ptr<T> p){if(p.get() == NULL){cout << "null"<<endl;}else{cout << *p;}}template <class T>ostream& operator<< (ostream& stream, auto_ptr<T>& p){if(p.get() == NULL){stream<< "NULL" <<endl;}else{stream << *p;}return stream;}/*int main(int argc, char* argv[]){std::auto_ptr<A> ptr1(new A);//std::auto_ptr<A> ptr2 = new A; //this is errorA *a1 = new A;std::auto_ptr<A> ptr3;ptr3 = auto_ptr<A> (new A);delete a1;//auto_ptr<int> pint(new int);const auto_ptr<int> pint(new int); auto_ptr<int> qint(new int);*pint = 10;*pint = 20;  *pint = *qint;//pint = qint; error//bad_print(pint); error//*p =20; errorreturn 0;}*/int main(int argc, char** argv){auto_ptr<int> p(new int(42));auto_ptr<int> q;cout << "init" <<endl;cout << "p=" << p <<endl;cout << "*p=" << *p <<endl;cout << "q=" << q << endl;q  = p;cout << "after assigning" <<endl;cout << "p=" << p <<endl;cout << "q=" << q << endl;}

原创粉丝点击