/* objectCopyTest.cpp */
#include <iostream>

using namespace std;


class CopyTest {
  int i;
public:
  CopyTest(int);
  void setI(int i);
  void print() const;
};



CopyTest::CopyTest(int i) : i(i) {
  cout << "One arg constructor: " << i << endl;
}


void CopyTest::setI(int ii) {
  i = ii;
}


void CopyTest::print() const {
  cout << "CopyTest object with data member i = " << i << endl;
}



void f(CopyTest ct, const CopyTest& rct) {
  cout << "Inside function f()" << endl;

  ct.setI(77);
  ct.print();

  rct.print();
}




int main() {
  CopyTest ct(11);

  f(ct, ct);

  cout << "Outside function f()" << endl;
  ct.print();

  return 0;
}
