C++智能指针

 1 #include<iostream>
 2 #include<memory>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     auto_ptr<int> ptr1(new int);
 9     unique_ptr<double> ptr2(new double);
10     return 0;
11 }

###有些地方说auto_ptr还是unique_ptr不能直接转换,只能显式调用,但是我在QT5上测试两个都可以直接转换,智能指针还有其他类型如shared_ptr在此暂时不做讨论。

两个智能指针到底哪个更智能,到底用哪个呢?

当然是unique_ptr,优势很多

 

1 auto_ptr<int> p1(new int);
2 auto_ptr<int> p2;
3 p2 = p1; 

第三行编译器是允许的,但是这样真的好么?

智能指针是封装好的产品,auto_ptr在析构的时候就会调用delete,那么就会析构两次这样就产生问题了,同一段内存delete两次的后果。。。

然而。。。

1 unique_ptr<int> p1(new int);
2 unique ptr<int> p2;
3 p2 = p1;

第三行却是不允许的,编译会报错,把隐患扼杀在编译时期。

待续。。。

你可能感兴趣的:(C++智能指针)