【发布时间】:2017-03-26 09:39:12
【问题描述】:
我对shared_ptr感到困惑,我的主要问题是:当我执行以下操作时,c++是否会创建一个新对象(shared_ptr对象)?
void Func1(const shared_ptr<T>& rhs) {}
void Func2(const shared_ptr<const T>& rhs) {}
shared_ptr<T> v1;
Func1(v1);
Func2(v1);
显然,Func1(v1) 是由 ref 传递的。但是,Func2(v1) 怎么样?
编译器会在后面做以下事情吗?
shared_ptr<const T> tmp_v2 = v1;
Func2(tmp_v2);
我很在意,因为Func2 可能比Func1 花费更多的时间(如果它确实创建了一个新的shared_ptr 对象)。
非常感谢您的帮助!
【问题讨论】:
标签: c++11 shared-ptr implicit-conversion pass-by-const-reference reference-binding