假设我有一个创建并返回对象的API边框函数:
<?> createOneObject();
Run Code Online (Sandbox Code Playgroud)
将对象返回给调用者的最佳方法是什么?
MyObject*并让调用者自己处理指针std::shared_ptr<MyObject>要看.
通常,返回原始指针是不好的,因为类型本身不会传递所有权.用户应该删除指针吗?如果是,那怎么样?如果没有,那么图书馆什么时候做呢?用户如何知道指针是否仍然有效?这些事情必须记录下来,懒惰的程序员可能会跳过阅读文档.但是,如果您的API必须可以从C或其他语言调用,那么原始指针可能是唯一的选择.
共享指针在特殊情况下可能很有用,但它们确实有开销.如果您不需要共享所有权,那么使用共享指针可能会过度.
除非有特殊原因要使用其他东西,否则我将使用唯一指针.
虽然,假设应该首先返回一个指针.另一个很好的选择可能是返回一个对象.
更具体一点:我有一个只存储id的玩家类,只提供了很多方法.在这种情况下,您更愿意按价值返回?
明确地.