std::make_shared
不能用私有构造函数(更新) 往期提到过,但只说了“没什么好做法,只能 std::shared_ptr<T>{new T}
”。
事实上用 static 成员函数封装一下就是最佳实践,这个函数当成 make_shared 理解就好接受了,代码如下:
class Foo {
private:
Foo() {}
public:
static std::shared_ptr<Foo> createInstance() {
return std::shared_ptr<Foo>(new Foo());
}
};