Je suis relativement nouveau pour C++ et que vous souhaitez adopter la pratique moderne. J'ai essayé de comprendre quand il est préférable de sink un unique_ptr
, voici un code que j'ai:Quand un évier unique_ptr
class SomeClass
{
...
private:
unique_ptr<QStaticText> _text;
}
{
...
void SomeClass::setText(unique_ptr<QStaticText> newText)
{
_text = move(newText);
}
void SomeClass::setText(const QStaticText& newText)
{
_text = make_unique<QStaticText>(newText);
}
...
}
Si je préfère un sur l'autre, que ce soit ou d'une autre?
Le deuxième devrait être préféré. Mais la raison pour laquelle vous ne pouvez pas avoir directement un membre 'QStaticText' n'est pas claire. –
Votre exemple est nul, mais l'idée générale est que vous acceptez ou renvoyez un 'unique_ptr' lorsque vous voulez transférer la propriété. Ceci est particulièrement important lorsque la ressource transférée ne peut pas être copiée (non imprimable, coûteuse, type complet inconnu), ce qui est également ce qui rend votre exemple si mauvais. Si vous pouvez copier et assigner un 'QStaticText', n'utilisez pas de pointeurs. En général, évitez d'utiliser 'new', bien qu'il puisse être légèrement différent avec Qt. –
avoir une lecture de Herb Sutter: pointeur intelligent Paramètres: http://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/ –