6. Class Missing Copy Constructor

z6.6.1-copy.cc
  class MyClass { public: MyClass(); ~MyClass(); private: int* dataObj; ... };
  MyClass::MyClass() { dataObj = new int; *dataObj = -1; }
  MyClass::~MyClass() { delete dataObj; }
  void SomeFunction(MyClass localObj) { /* Do something with localObj */ }
  int main() { MyClass tempClassObj; // Create object of type MyClass

Constructor called.

     tempClassObj.SetDataObj(9);
     cout << "Before: " << tempClassObj.GetDataObj() << endl;

Before: 9

     SomeFunction(tempClassObj); // tempClassObj is passed by value, i.e. copied

Destructor called.

     cout << "After: " << tempClassObj.GetDataObj() << endl;

After: 0

  }

Destructor called.
*** Error in `./a.out': double free or corruption (fasttop): 0x0000000000d2bc20 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81489)[0x7f039f06d489]
...
Abort