// shared_ptr.cc #include #include using namespace std; class MyClass { public: MyClass() { cout << "Constructing MyClass" << endl; } ~MyClass() { cout << "Destructing MyClass" << endl; } }; void misc_function(shared_ptr p); int main() { shared_ptr myp(new MyClass); // use_count() prints number of references the object pointed to; // mainly used for debugging / pedagogical purposes cout << "Just created shared pointer myp" << endl; cout << myp.use_count() << endl; misc_function(myp); cout << "Back in main" << endl; cout << myp.use_count() << endl; } void misc_function(shared_ptr p) { // Passed p by value, so now one more reference to original obj // while we're in this function cout << "In misc_function." << endl; cout << p.use_count() << endl; }