Back to slide -- Keyboard shortcut: 'u'  previous -- Keyboard shortcut: 'p'                point-cpp-cs-exercise/cpp/prog3.cc - The C++ client program with Point value semantics.Lecture 2 - slide 27 : 27
Program 9

// Notice: New sematics due to use of call-by-value.

#include <iostream>
#include "point.h"

using namespace std;

Point pointmover(Point pa, Point pb){
  pa.move(5,6);
  pb.move(-5,-6);
  return pb;
}

void go(){
  Point p1(1, 2),
        p2(3, 4),
        p3 = p1,    // Copy p1
        p4 = p2;    // Copy p2

  Point p5 = pointmover(p1, p2);   // Pass copies. 

  cout << p1 << endl <<   // (1,2)
          p2 << endl <<   // (3,4)
          p3 << endl <<   // (1,2)
          p4 << endl <<   // (3,4)
          p5 << endl;     // (-2,-2), a moved copy of p2, copied back from pointmover.
}

int main(){
  go();
}