当一个函数采用shared_ptr(来自boost或C++ 11 STL)时,你传递它:
通过const引用: void foo(const shared_ptr<T>& p)
或按价值:void foo(shared_ptr<T> p)?
我更喜欢第一种方法,因为我怀疑它会更快.但这真的值得吗还是还有其他问题吗?
您能否说出您选择的原因或案例,为什么您认为无关紧要.
即使我的代码编译得很好,这也是困扰我的东西,我无法在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的根本误解?
(对于任何阅读本文的人来说,请注意这可能是一个更好的实现)