C++ 自动ptr陷阱和陷阱
除了使用auto_ptr的所有已知好处之外,auto_ptr的“最坏实践”是什么C++ 自动ptr陷阱和陷阱,c++,auto-ptr,C++,Auto Ptr,除了使用auto_ptr的所有已知好处之外,auto_ptr的“最坏实践”是什么 创建自动打印的STL控件。 auto_PTR不满足“可复制”要求。另见Scott Meyer的“有效STL”,第8项 创建阵列的自动\u ptr 销毁后,auto_ptr的析构函数使用“delete”(并且从不使用“delete[])销毁所拥有的对象,因此此代码产生未定义的行为: 自动ptr api(新int[42]) 在使用auto_ptr成员的类中不考虑copy ctor和op=。 人们可能天真地认为,通过使用
还有更多的自动陷阱吗?不确定这是否是一个陷阱,但肯定不是那么明显:
- const auto_ptr不能转移其所包含指针的所有权
const auto_ptr<Foo> ap(new Foo());
auto_ptr<Foo> ap2;
ap2 = ap; // Not legal!
const auto_ptr ap(新的Foo());
自动ptr ap2;
ap2=ap;//不合法!
如果您想使用AutoJPTR参数,并保证您不拥有所包含的指针,这是非常有用的,但是如果您希望<>代码> conAutoPPTR <代码>的行为类似于<代码> fo const */COD>,也可以是令人惊讶的。将在下一个C++标准中被弃用。(萨特希望在2011年3月后正式投票(),从而成为美国顽固派的C++0B)。如果你有
unique\u ptr
,请改用它。