我有以下代码:
class MarchingEvent
{
...
};
typedef std::list< std::shared_ptr<MarchingEvent> > Segment;我可以这样做:
void myFunction(std::shared_ptr<MarchingEvent> A)
{
Segment segment;
segment.push_back( A ); // <- Questionable line.
}当将A推到段时,我的智能指针会正确递增吗?
发布于 2018-08-21 10:22:11
当将A推入段时,我的智能指针会被正确地递增吗?
是。这就是std::shared_ptr应该做的。
但是,请注意,如果在调用A之后不使用对象push_back,则可能需要将最后一行更改为
segment.push_back(std::move(A));要移动-构造segment中的元素而不是复制它-复制已经在函数输入时完成,因为A是通过值传递的。
https://stackoverflow.com/questions/51946513
复制相似问题