Lorsque vous travaillez avec un membre std::unique_ptr dans une classe, il existe des cas où un suppresseur personnalisé peut être requis. Ceci est particulièrement pertinent lorsque l'objet membre nécessite des procédures de nettoyage ou de destruction spécifiques.
Considérons un scénario dans lequel votre classe a un membre std::unique_ptr
Dans une fonction autonome, vous pouvez utiliser un std::unique_ptr avec un suppresseur personnalisé comme ceci :
void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b) { destroy(b); }); ... }
Maintenant, adaptons cette approche à une situation où std::unique_ptr est utilisé en tant que membre dans une classe appelée Foo :
class Foo { private: std::unique_ptr<Bar, void(*)(Bar*)> bar_; ... public: Foo() : bar_(create(), destroy) { /* ... */ } // ... };
Notez qu'aucun suppresseur lambda ou personnalisé n'est nécessaire dans cette implémentation car destroy lui-même sert de suppresseur. Cela permet de gérer de manière claire et concise la propriété unique du membre du barreau tout en utilisant sa procédure de destruction personnalisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!