Initializing shared_ptr member variable, new vs make_shared?
问题 When initializing a shared_ptr member variable: // .h class Customer { public: Customer(); private: std::shared_ptr<OtherClass> something_; } // .cpp Customer(): something_(new OtherClass()) { } vs. Customer(): something_(std::make_shared<OtherClass>()) { } Is the make_shared version allowed? I always seem to see the first version, which is preferred? 回答1: The only times when make_shared is not allowed are: If you're getting a naked pointer allocated by someone else and storing it in shared