传递const引用或共享指针/向量并分配给非引用成员

时间:2017-08-18 14:50:17

标签: c++11 reference const shared-ptr stdvector

CPP支票正在抱怨这种结构:

void setThing(std::shared_ptr<Thing> theThing) { memberThing = theThing; }

其中memberThing是std::shared_ptr<Thing>

更改为: void setThing(const std::shared_ptr<Thing>& theThing);

cppcheck不再抱怨了。

我需要一个共享指针,我不能保证theThing将永远存在,所以我不想要一个成员引用。但是为什么const引用在分配给非引用成员时有效?实际上会发生什么?共享指针是否已复制到memberThing?参考在哪里?

实际上

的问题完全相同

void setThings(std::vector<std::shared_ptr<Thing>> theThings) { memberThings = theThings; }

其中memberThing是std::vector<std::shared_ptr<Thing>>

使用这种结构时,向量会发生什么?它被复制了吗?当原始载体被破坏时会发生什么?我可以更好地使用第一个版本或第二个版本吗?

我很困惑一个const矢量&amp;可以分配给矢量(非参考)。这还是个好主意吗?在这种情况下最好的做法是什么?为什么?

0 个答案:

没有答案