我在接受采访时被问到这个问题。似乎boost库有一个名为scoped_pointer的东西。不确定他是否问过这件事。
答案 0 :(得分:1)
该术语最有可能是指c ++ smart-pointers类别,它为指针提供范围所有者管理。
答案 1 :(得分:1)
Boost确实有scoped_ptr
。
提升文档
使用scoped_ptr而不是auto_ptr的主要原因是让代码的读者知道您打算"资源获取是初始化" >仅适用于当前范围,无意转让所有权。
使用scoped_ptr的第二个原因是为了防止后来的维护程序员通过返回auto_ptr来添加一个转移所有权的函数,因为维护程序员看到了auto_ptr,并且假设所有权可以安全地转移。
想想bool vs int。我们都知道,bool下通常只是一个int。事实上,有些人反对将COL标准中的bool包括在内。但是通过编码bool而不是int,你可以告诉读者你的意图是什么。与scoped_ptr相同;通过使用它,你发出意图。
有人建议scoped_ptr等同于std :: auto_ptr const。然而,Ed Brey指出,重置不适用于std :: auto_ptr const。