当前位置:  开发笔记 > 编程语言 > 正文

在C++中传递对象所有权

如何解决《在C++中传递对象所有权》经验,为你挑选了1个好方法。

指示对象想要获取另一个对象的所有权的最佳方法是什么?到目前为止,我一直std::auto_ptr在公共接口中使用a ,因此客户端知道接口想要获取传递对象的所有权.

但是,最新的GCC告诉我auto_ptr已被弃用,所以我想知道推荐什么?boost::interprocess::unique_pointer看起来像个好人,但这真的是最好的解决方案吗?



1> Blaisorblade..:

boost::interprocess 是一个进程间通信的库,所以我不会将它用于不同的目的.

正如本论坛所讨论的:

http://objectmix.com/c/113487-std-auto_ptr-deprecated.html

std::auto_ptr将在标准的下一个版本中声明已弃用,其中将建议使用std::unique_ptr,这需要实现rvalue引用和移动语义(这是一个相当复杂的特性).

在新标准发布之前,我会尽可能地尝试禁用警告,或者忽略它,以获得最大的可移植性.

如果您想要切换到下一个语言标准,可以实现rvalue引用(请参阅http://russ.yanofsky.org/rref/),因此也std::unique_ptr应该受到支持.

关于新语义的优点是你可以将移动构造函数也传递给临时或任何右值; 在其他情况下,这允许std::vector在销毁原始对象之前避免复制(例如)包含在(在重新分配期间)内的对象.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有