首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将智能指针推送到智能指针列表?

是否可以将智能指针推送到智能指针列表?
EN

Stack Overflow用户
提问于 2018-08-21 10:19:30
回答 1查看 673关注 0票数 0

我有以下代码:

代码语言:javascript
复制
class MarchingEvent
{
...
};

typedef std::list< std::shared_ptr<MarchingEvent> > Segment;

我可以这样做:

代码语言:javascript
复制
void myFunction(std::shared_ptr<MarchingEvent> A)
{
    Segment segment;
    segment.push_back( A ); // <- Questionable line.
}

当将A推到时,我的智能指针会正确递增吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-21 10:22:11

当将A推入段时,我的智能指针会被正确地递增吗?

是。这就是std::shared_ptr应该做的。

但是,请注意,如果在调用A之后不使用对象push_back,则可能需要将最后一行更改为

代码语言:javascript
复制
segment.push_back(std::move(A));

要移动-构造segment中的元素而不是复制它-复制已经在函数输入时完成,因为A是通过值传递的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51946513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档