// Similar program - with raw pointers #include #include #include #include "point.h" using namespace std; int f(){ Point *pp1{new Point{1,2}}, *pp2{new Point{3,4}}, *pp3; cout << *pp1 << endl; // (1,2) cout << *pp2 << endl; // (3,4) pp1 = nullptr; 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; } int main(){ f(); cout << "After f()" << endl; // Both points (1,2) and (3,4) are still on the heap. }