scoped_ptr无法复制,正在被删除。因此,这是一种受限制的shared_ptr。因此,在确实需要限制复制操作的情况下,似乎最好使用shared_ptr。因为有时您不知道需要创建对象的副本,还是不需要。因此,问题是:除了上述情况外,我们是否可以考虑使用shared_ptr代替scoped_ptr更好(或建议使用)。 scoped_ptr是否比shared_ptr快得多,或者有什么优点?

谢谢!

最佳答案

shared_ptrscoped_ptr更重。它需要分配和释放引用计数对象以及托管对象,并需要处理线程安全的引用计数-在我工作过的一个平台上,这是很大的开销。

我的建议(通常)是使用满足您需求的最简单的对象。如果您需要引用计数共享,请使用shared_ptr;如果只需要完成一次引用,就需要自动删除,请使用scoped_ptr

关于c++ - shared_ptr与scoped_ptr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1770636/

10-11 17:57