返回共享指针

时间:2017-08-10 07:23:52

标签: c++

在C ++中,如果我从函数返回共享/唯一ptr,它是否按值返回?即

shared_ptr<CLASS> function_f(){
   auto p = make_shared<CLASS>(5);
   return p;
}

那会发生什么?指针内部是否动态分配?如果我返回这个,我有2个指针指向同一个东西吗?

1 个答案:

答案 0 :(得分:4)

shared_ptr本身是按值返回的。它指向的CLASS对象是动态分配的,因此不会被复制。

你可能会在同一个对象上短暂地拥有两个shared_ptr(RVO除外,所以在实践中你可能已经赢了),但是通过设计shared_ptr类,这不是一个问题。