scoped_ptr
无法复制,正在被删除。因此,这是一种受限制的shared_ptr
。因此,在确实需要限制复制操作的情况下,似乎最好使用shared_ptr
。因为有时您不知道需要创建对象的副本,还是不需要。因此,问题是:除了上述情况外,我们是否可以考虑使用shared_ptr
代替scoped_ptr
更好(或建议使用)。 scoped_ptr
是否比shared_ptr
快得多,或者有什么优点?
谢谢!
最佳答案
shared_ptr
比scoped_ptr
更重。它需要分配和释放引用计数对象以及托管对象,并需要处理线程安全的引用计数-在我工作过的一个平台上,这是很大的开销。
我的建议(通常)是使用满足您需求的最简单的对象。如果您需要引用计数共享,请使用shared_ptr
;如果只需要完成一次引用,就需要自动删除,请使用scoped_ptr
。
关于c++ - shared_ptr与scoped_ptr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1770636/