为什么在标准容器中使用std:autoptr<>是错误的?

为什么在标准容器中使用std:autoptr<>是错误的?

为什么使用它是错误的?std::auto_ptr<>标准容器?



哈士奇WWW
浏览 736回答 3
3回答

繁星coding

这个复制语义的auto_ptr与容器不兼容。具体而言,复制一个auto_ptr对于另一个对象,不会创建两个相等的对象,因为一个对象已经失去了指针的所有权。更具体地说,复制auto_ptr导致其中一个副本释放指针。还没有定义容器中的这些遗留物中的哪一个。因此,如果存储auto_ptrs在集装箱里。

婷婷同学_

STL容器需要能够复制存储在其中的项目,并且设计成期望原始和副本是等价的。自动指针对象有一个完全不同的契约,复制创建所有权转移。这意味着根据使用情况,AUTO_PTR容器将表现出奇怪的行为。这里详细描述了有效STL(ScottMeyers)第8项中可能出错的地方,以及有效C+(ScottMeyers)第13项中不那么详细的描述。
打开App,查看更多内容
随时随地看视频慕课网APP