与基于堆叠的数据不同, 范围_ ptr 有重置() 成员, 换句话说, 您可以构造/ 破坏心脏内容。 这样, 您可以使用一个空指针( 技术上的 < code> operator until-bool- type code > ) 作为标志, 显示在任何特定时间是否存在一个已建物体。 它还可以允许您在需要时, 将构造/ 销毁序列与变量范围分开 。
另外,考虑您可以宣布一个范围_ptr为阶级成员,而不仅仅是堆叠变量。docs 建议使用范围_ptr来实施控点/body idom(以隐藏分类执行细节)。
最后,为了详细解释死母体的“如果是动态型的”,你可以使用范围_ptr来实施 < a href="http://en.wikipedia.org/wiki/polyformalism_in_object-object-foold_programming",rel=“不跟随 noreferrer'>polyformic 操作 :
{
scoped_ptr<Base> a( mode ? new DerivedA : new DerivedB );
a->polymorphic_function();
}
使用 < em> 简单 em > 的堆叠分配方式无法真正做到这一点 。
另见:C+/0x united_ptr 取代Speed_ptr 拥有权?