You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++函数处理无所有权对象时参数选原始指针、智能指针还是引用?

问题场景

设想如下场景:
我定义了类A和类B:

/* 持有shared_ptr的类 */
class A {
public:
  //...

private:
  std::shared_ptr<object_t> m_ptr;
};

/* 持有unique_ptr的类 */
class B {
public:
  //...

private:
  std::unique_ptr<object_t> m_ptr;
};

我需要实现一个函数,使用并处理m_ptr指向的对象,但不会接管该对象的所有权,需要选择合适的参数定义形式:

  • 智能指针形式:
void process(std::shared_ptr<object_t> obj);
  • 原始指针形式:
void process(object_t* obj);

补充说明

我之前遗漏了一个非常重要的第三种函数参数定义方式:

void process(object_t& obj);

用户kotatsuyaki指出,这种引用传参的形式才是更优的解决方案。


内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:21:37