auto_ptr是个pointer-like对象,也就是所谓的“智能指针”,其析构函数会自动调用。
std::auto_ptr
<
Investment
>
ptr1(
new
Investment());
//
之后,如果:
std::auto_ptr
<
Investment
>
ptr2(ptr1);
//
或者:
ptr2
=
ptr1;
//
那么ptr2指向那个对象,ptr1置空。
shared_ptr类似,但它可以追踪有多少指针指向该对象,并在无指针指向时析构。
这时的拷贝:
ptr2=ptr1;
结果则是两个指针指向同一对象。
auto_ptr和shared_ptr一般都不要指向数组,否则它们只会析构掉数组首元素!
本文介绍了两种C++智能指针:auto_ptr与shared_ptr。auto_ptr为独占所有权模型,在复制或赋值后原指针置空;shared_ptr采用引用计数机制,多个指针可共享同一对象。文中还特别提醒不要将这两种智能指针用于数组,以防析构不完整。

3万+

被折叠的 条评论
为什么被折叠?



