2012-07-09 12 views
6

Vedo due soluzioni ragionevoli al problema di un membro di prendere possesso di un parametro:membro di prendere la proprietà del parametro

Foo::Foo(std::unique_ptr<int> parameter) 
: member(std::move(parameter)) 
{ 
} 

Bar::Bar(std::unique_ptr<int> parameter) 
{ 
    member.swap(parameter); 
} 

Quale di questi è più idiomatica, più facile da capire, facile da eseguire il debug, più facile da mantenere eccetera.?

Esistono soluzioni aggiuntive al problema che ho perso?

risposta

12

Favorisce sempre l'elenco di inizializzazione. Inoltre, copre tipi che possono essere spostati ma non scambiati, ad esempio, o tipi che possono dover eseguire operazioni costose per la costruzione di default o, in realtà, tipi che semplicemente non possono essere costruiti in modo predefinito.

Problemi correlati