我有以下代码:
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 推到段时,我的智能指针会正确增加吗?
答案 0 :(得分:4)
按A进行细分时,我的智能指针会正确增加吗?
是的。这就是std::shared_ptr
要做的。
但是请注意,如果在调用A
之后不使用对象push_back
,则可能需要将最后一行更改为
segment.push_back(std::move(A));
要移动构造segment
中的元素而不是复制它-输入函数后就已经完成了复制,因为A
是按值传递的。