相关疑难解决方法(0)

我们应该通过引用还是通过值传递shared_ptr?

当一个函数采用shared_ptr(来自boost或C++ 11 STL)时,你传递它:

  • 通过const引用: void foo(const shared_ptr<T>& p)

  • 或按价值:void foo(shared_ptr<T> p)

我更喜欢第一种方法,因为我怀疑它会更快.但这真的值得吗还是还有其他问题吗?

您能否说出您选择的原因或案例,为什么您认为无关紧要.

c++ boost shared-ptr c++11

253
推荐指数
8
解决办法
10万
查看次数

为什么复制const shared_ptr而不是违反const?

即使我的代码编译得很好,这也是困扰我的东西,我无法在stackoverflow上找到答案.以下泛型构造函数是将shared_ptr传递给构造函数中的类实例的一种方法.

MyClass {
  MyClass(const std::shared_ptr<const T>& pt);
  std::shared_ptr<const T> pt_;  //EDITED: Removed & typo
};

MyClass::MyClass(const std::shared_ptr<const T>& pt)
  : pt_(pt)
{ }
Run Code Online (Sandbox Code Playgroud)

编译好了.我的问题如下:在我的理解中,声明一个像这样的参数const:

void myfunc(const T& t)
Run Code Online (Sandbox Code Playgroud)

承诺不改变.但是,通过将shared_ptr pt复制到pt_,我是否有效地增加了shared_ptr pt的使用次数,从而违反了假定的常量?

这可能是对我这边的shared_ptrs的根本误解?

(对于任何阅读本文的人来说,请注意可能是一个更好的实现)

c++ const shared-ptr

7
推荐指数
2
解决办法
816
查看次数

标签 统计

c++ ×2

shared-ptr ×2

boost ×1

c++11 ×1

const ×1