Podczas inicjalizacji shared_ptr członek zmiennej:Inicjowanie zmienną składową shared_ptr, nowe kontra make_shared?
// .h
class Customer
{
public:
Customer();
private:
std::shared_ptr<OtherClass> something_;
}
// .cpp
Customer():
something_(new OtherClass())
{
}
vs.
Customer():
something_(std::make_shared<OtherClass>())
{
}
jest wersja make_shared dozwolone? Zawsze wydaje mi się, że pierwsza wersja jest preferowana?
Herb Sutter właśnie napisał GOTW na ten temat. Zobacz [to] (http://herbsutter.com/gotw/_103/), a także sprawdź [jeden problem] (http://lanzkron.wordpress.com/2012/04/22/make_shared-almost-a-silver -bullet /), którego Herb nie podaje wprost. –
@RSamuelKlatchko - Zaktualizowany link do pierwszego linku podanego w ansewer use https://herbsutter.com/2013/05/29/gotw-89-solution-smart-pointers/ –