除了使用 auto_ptr 的所有已知好处之外,什么是 auto_ptr “最坏的做法”?
创建 auto_ptrs 的 STL 约束器。auto_ptrs 不满足“CopyConstructable”要求。另见 Scott Meyer 的“Effective STL”,第 8 项。
创建数组的auto_ptrs 在销毁时,auto_ptr 的析构函数使用'delete'(而不是'delete[]')来销毁拥有的对象,因此此代码产生未定义的行为:auto_ptr api(new int[42]);
在使用 auto_ptr 成员的类中不处理 copy-ctor 和 op=。有人可能会天真地认为通过使用 auto_ptr 成员不需要为类实现复制构造函数/赋值运算符。然而,即使是单个 auto_ptr 成员也会“毒害”一个类(即违反“CopyConstructable”和“Assignable”要求)。在复制/分配操作期间,此类对象将部分损坏。
还有更多的 auto_ptr 陷阱吗?