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;可以分配给矢量(非参考)。这还是个好主意吗?在这种情况下最好的做法是什么?为什么?