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