std :: auto_ptr缺少const拷贝构造函数,因此我不能直接在集合中使用它。有没有一些方法,例如向量的std :: auto_ptr,而不使用boost指针集合模板?C++ std :: auto_ptr拷贝构造函数
回答
不,你不能有一个向量std::auto_ptr
,虽然有很多猜测,你可以。但是如果你的编译器支持C++ 0x,那么你可以使用std::unique_ptr
,这是不推荐使用的自动指针的新选择,它引用了新标准,它提供了一个优越的选择。另请参阅this thread
auto_ptr设计用于在变量离开范围时自动删除。你不想在集合中使用它,而是像上面提到的那样,你想使用类似shared_ptr的东西。 auto_ptr的的典型用途的
例子:
void foo()
{
auto_ptr<int> bar = auto_ptr<int>(new int);
...
return; //memory held by auto_ptr is automatically deleted
}
任何超出此用途是潜在的危险和/或损坏,如果你不知道的auto_ptr的特殊意义。 (编辑:根据Armen的评论澄清)
我会与你的陈述争辩“除此之外的任何用途可能是危险的和/或破碎的......” – 2010-10-19 19:19:58
够公平的,还有其他有效的用途。虽然auto_ptr的使用相对有限,但如果您在约束范围外使用它,可能会非常危险,例如在函数中作为局部变量。 – kkress 2010-10-19 19:25:31
- 1. C++的auto_ptr和拷贝构造
- 2. 拷贝构造函数knowlege
- 3. C++中的拷贝构造函数
- 4. 拷贝构造函数在C++
- 5. C++默认的拷贝构造函数
- 6. 指针和拷贝构造函数C++
- 7. C++拷贝构造函数怪异
- 8. C++帮助拷贝构造函数
- 9. 拷贝构造函数
- 10. 拷贝构造函数++
- 11. 的拷贝构造函数
- 12. 用模板拷贝构造函数替换默认拷贝构造函数
- 13. C++中拷贝构造函数
- 14. 拷贝构造函数在C++
- 15. 拷贝构造函数和operator =在C++
- 16. 通用C#拷贝构造函数
- 17. C++拷贝构造函数语法
- 18. C#泛型拷贝构造函数
- 19. c#拷贝构造函数生成器
- 20. 基类的拷贝构造函数(C++)
- 21. 拷贝构造函数类C++
- 22. C++编程拷贝构造函数
- 23. C++默认拷贝构造函数
- 24. C++的std :: deque的拷贝构造函数问题
- 25. 拷贝构造
- 26. 拷贝构造函数不叫
- 27. 新图的深拷贝构造函数
- 28. D结构体拷贝构造函数
- 29. 转发拷贝构造函数问题
- 30. 拷贝构造函数和函数从
'shared_ptr'不需要C++ 0x;它在TR1中。 – Potatoswatter 2010-10-19 19:19:48
@Potatoswatter - 感谢您的澄清笔记 - 如果OP有权访问它,'unique_ptr'更适合纠正有缺陷的'auto_ptr'语义。 – 2010-10-19 19:22:06