智能指针:auto_ptr和shared_ptr

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一般都不要指向数组,否则它们只会析构掉数组首元素! 

你可能感兴趣的:(智能指针:auto_ptr和shared_ptr)