加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – API返回类型 – 强制智能指针到用户?

发布时间:2020-12-16 10:03:08 所属栏目:百科 来源:网络整理
导读:假设我有一个创建并返回对象的API边框函数: ? createOneObject(); 将对象返回给调用者的最佳方法是什么? 返回原始MyObject *并让调用者自己处理指针 返回std :: shared_ptr MyObject 还有别的吗? 解决方法 要看. 通常,返回原始指针是不好的,因为类型本身
假设我有一个创建并返回对象的API边框函数:

<?> createOneObject();

将对象返回给调用者的最佳方法是什么?

>返回原始MyObject *并让调用者自己处理指针
>返回std :: shared_ptr< MyObject>
>还有别的吗?

解决方法

要看.

通常,返回原始指针是不好的,因为类型本身不会传递所有权.用户应该删除指针吗?如果是,那怎么样?如果没有,那么图书馆什么时候做呢?用户如何知道指针是否仍然有效?这些事情必须记录下来,懒惰的程序员可能会跳过阅读文档.但是,如果您的API必须可以从C或其他语言调用,那么原始指针可能是唯一的选择.

共享指针在特殊情况下可能很有用,但它们确实有开销.如果您不需要共享所有权,那么使用共享指针可能会过度.

除非有特殊原因要使用其他东西,否则我将使用唯一指针.

虽然,假设应该首先返回一个指针.另一个很好的选择可能是返回一个对象.

To be a bit more concrete: I have a player class that just stores an id and just offers lots of methods. In this case you would prefer to return by value?

明确地.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读