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