当std::make_shared(new Foo())
被调用时,它构造一个 Foo 并std::shared_ptr<Foo>
为调用者返回一个(即此处)。如果从各种对象多次调用它,它是否new Foo()
每次都构造一个?在这种情况下,与每个调用者获得对新对象的单个引用没有什么不同,实际上就像 unqiue_ptr 一样?
或者它Foo()
是第一次创建一个然后返回std::shared_ptr
s ,知道它会像某种单例一样(当然,一旦最后一个std::shared_ptr
被销毁就删除)?这个平台是特定的吗?
特别是这样的功能:
std::shared_ptr<Foo> makeFoo()
{
return std::make_shared<Foo>();
}