Quando si inizializza una variabile membro shared_ptr:Inizializzazione della variabile membro shared_ptr, nuova vs 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>())
{
}
è la versione make_shared ammessi? Mi sembra sempre di vedere la prima versione, che è preferibile?
Herb Sutter ha appena scritto un GOTW su questo. Vedi [this] (http://herbsutter.com/gotw/_103/) e controlla anche [un problema] (http://lanzkron.wordpress.com/2012/04/22/make_shared-almost-a-silver -bullet /) che Herb non dichiara esplicitamente. –
@RSamuelKlatchko - Un link aggiornato per il primo link che hai fornito nel tuo account utilizza https://herbsutter.com/2013/05/29/gotw-89-solution-smart-pointers/ –