C++ 三个智能指针
auto_ptr (C++98) C++11已经摒弃
C++11 shared_ptr unique_ptr
auto_ptr<int> aptr(new int(2));
auto_ptr<int> aptr1 = aptr;
cout << *aptr;//运行时此步将报错,因为aptr对new申请的内存的权限已经被剥夺
unique_ptr<int> uptr(new int(2));
unique_ptr<int> uptr1 = uptr;//编译时就会报错,所以unique_ptr比auto_ptr更安全
shared_ptr<int> sptr(new int(2));
shared_ptr<int> sptr1 = sptr;
cout << *sptr << *sptr1;//shared_ptr的这些操作都是安全的,因为他使用的引用计数的机制
另注:auto_ptr,shared_ptr只能针对new delete使用,而unique_ptr还可以针对 new[] delete []使用