我对 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
.
非常感谢您的帮助!