Scoped_ptr a peu en commun avec shared_ptr, weak, ou unique_ptr parce que c'est seulement à faire le cas très particulier de "comptage de référence". Ce n'est pas quelque chose que vous devrez très souvent bien conçus code, mais c'est un bon outil à avoir disponible.
Fondamentalement, un scoped_ptr n'est pas une référence compté chose. Plutôt, c'est un objet que vous créez sur la pile (à l'intérieur de la portée locale), de sorte que vous pouvez faire quelque chose comme ceci:
//Some enclosing scope- anything set off by "{}" or even a function:
{
scoped_ptr<MyObject> ptr = new MyObject( parameters...);
} // When we hit this closing brace, "ptr" will delete the "MyObject" inside.
Vous avez tendance à voir cette tendance est plus avec les mutex et les autres de synchronisation primatives - je peux déclarer un "verrouillage automatique" qui permet de verrouiller le mutex passés dans celui-ci, puis déverrouiller lorsqu'il supprime tout "{}" étendue dans une section critique.
Notez également qu'un "scoped_ptr' n'a jamais de sens que si vous ne pouvez pas simplement faire un bon vieil allocation de pile comme "Monobjet obj(params..)" pour une raison quelconque. Après tout, ce qu'il fait est ce qui vous permet d'utiliser un segment de mémoire alloué par l'objet comme s'il était l'un sur la pile. Qui tend à être beaucoup plus rare, un cas d'utilisation que le comptage de références de shared_ptr & ses cousins.