fonctionne-t-il pour un nettoyage arbitraire à l'arrêt ? " />
Malgré les attentes, std::shared_ptr peut être utilisé pour effectuer un nettoyage arbitraire à l'arrêt, même en utilisant std::shared_ptr Effacement de type Lorsqu'un shared_ptr est créé, il encapsule le pointeur détenu. avec une fonction de suppression. Cette fonction appelle généralement delete mais peut être configurée différemment via le constructeur. Lors de la destruction du shared_ptr, le suppresseur stocké est invoqué, déclenchant le nettoyage de l'objet. Pour comprendre l'effacement de type, considérons l'exemple simplifié suivant en utilisant std::function:template
Ici, my_unique_ptr
std::shared_ptr et Type Erasure
Les pointeurs partagés utilisent également l'effacement de type. Lors de la copie ou de la construction par défaut d'un shared_ptr à partir d'un autre, les informations du suppresseur sont conservées. Cela signifie qu'un shared_ptr
Selon la norme C, ce comportement est garanti. Les implémentations ne peuvent pas modifier les éléments internes de std::shared_ptr d'une manière qui interromprait cette fonctionnalité. Par conséquent, en utilisant std::shared_ptr
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!