gpt4 book ai didi

C++ 对 shared_ptr 的引用与引用

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:40 26 4
gpt4 key购买 nike

全部,

我最近发布了这个 question关于 DAL 设计。由此看来,将对象的引用传递给函数,然后函数填充该对象,对于 C++ 数据访问层来说是一个很好的接口(interface),例如

  bool DAL::loadCar(int id, Car& car) {} 

我现在想知道是否使用对 boost::shared_ptr 的引用会更好,例如

  bool DAL::loadCar(int id, boost::shared_ptr<Car> &car)

有什么想法吗?一个比另一个有优势吗?

将 const 正确性应用于两个调用会产生什么影响?

提前致谢。

最佳答案

正如 sbi 所说,“这取决于函数的作用。”

不过,我认为上面最重要的方面不是是否允许NULL,而是函数是否存储了指向对象的指针供以后使用。如果函数只是填充一些数据,那么我会使用引用,原因如下:

  • 该函数仍然可以被不使用 shared_ptr 的客户端使用,用于堆栈对象等。
  • 将函数与 shared_ptr 一起使用仍然很简单 - shared_ptr 具有返回引用的取消引用运算符
  • 不能传递 NULL
  • 少打字
  • 我不喜欢在不必要的时候使用“东西”

如果函数需要存储指针供以后使用,或者您预计函数可能会以需要存储指针的方式更改,则使用 shared_ptr。

关于C++ 对 shared_ptr 的引用与引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1542774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com