#include #include "sptr.h" class Annoy { public: Annoy() : nCnt( 0 ) { printf("Created.\n"); } ~Annoy() { printf("Destroyed.\n"); } void go() { printf("%d: I'm annoying.\n", ++nCnt); } int nCnt; }; void beAnnoying( SPtr bob ) { printf("bob-Count: %d\n", bob.count() ); bob->go(); } int main() { SPtr pt( new Annoy ); printf("Count: %d\n", pt.count() ); pt->go(); { SPtr pt2 = pt; printf("Count: %d\n", pt2.count() ); pt2->go(); { SPtr pt3( pt2 ); printf("Count: %d\n", pt3.count() ); pt3->go(); beAnnoying( pt3 ); } printf("Count: %d\n", pt.count() ); } printf("Count: %d\n", pt.count() ); }