shared-pointers/shared-ptr2.cc - Another simple illustration of shared_ptr<Point>. | Lecture 4 - slide 15 : 40 Program 9 |
// Another simple example of shared_ptr (not directly related to the previous examples). #include <memory> #include <iostream> #include <string> #include "point.h" using namespace std; int f(){ shared_ptr<Point> pp1{new Point{1,2}}, pp2{new Point{3,4}}, pp3; cout << *pp1 << endl; // (1,2) cout << *pp2 << endl; // (3,4) pp1.reset(); // empty pp1 - delete underlying point (1,2) from the heap. pp3 = pp2; // both pp3 and pp2 refer to (3,4). pp3->displace(1,1); // displace point pointed to by pp3 cout << *pp2 << endl; // (4,5) - Point pointed to by pp2 has moved! cout << "Exit f" << endl; // Delete the other point (3,4) from the heap. // Thus both points have disappeared from the heap at this time. } int main(){ f(); cout << "After f()" << endl; // All points on the heap have been released at this point. }