我正在阅读有关共享指针的一些注释.他们说STL与auto_ptr的第一次尝试有以下主要缺点:
我理解前两个,但我不确定最后一个意味着什么.
有人可以解释一下.
谢谢.
Ale*_* C. 10
这是因为一旦将其复制auto_ptr到变量中,就会丧失指向新变量的指针的所有权.
当你有:
void foo(std::auto_ptr<bar> x);
Run Code Online (Sandbox Code Playgroud)
和你打电话foo用auto_ptr,你做的副本auto_ptr供foo的使用.这有效地将所有权转移到foo,因此指针在foo完成后被删除.
这是一个非常令人惊讶的行为,让我最终停止使用auto_ptr.对于try块内的简单RAII (auto_ptr如书中所述的主要用例),请使用boost::scoped_ptr.
基本上,auto_ptr将所有权转移到指定的指针.
传递auto_ptr给函数时,指针的所有权将传递给函数参数中的接收指针.此指针的范围仅限于函数体,因此当函数退出时指针会被删除.
在有效使用auto_ptr中阅读它.Herb Sutter很好地和权威地解释了它.
| 归档时间: |
|
| 查看次数: |
3876 次 |
| 最近记录: |