该网站在“所有权、来源和汇”上声明:
“当你复制一个auto_ptr
时,你会自动将所有权从源转移auto_ptr
到目标auto_ptr
;如果目标auto_ptr
已经拥有一个对象,则该对象首先被释放。复制后,只有目标auto_ptr
拥有指针并在适当的时候将其删除,而源被设置回空状态,不能再用于引用拥有的对象。”。
现在考虑Stroustrup 的The C++ Programming Language Third Edition的第 14 章第 368 页中operator=()
的定义:templacte<classX> class auto_ptr
auto_ptr& operator=(auto_ptr& a) throw() { ptr = a.ptr; a.ptr = 0; }
我看不到操作员释放由 寻址的对象ptr
,以防万一ptr != 0
!