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;
第三行却是不允许的,编译会报错,把隐患扼杀在编译时期。
待续。。。
浙公网安备 33010602011771号