Mega Code Archive

 
Categories / C++ Tutorial / Function
 

Copy constructor invoked when passing an object to a function

#include <iostream>  using namespace std;    class MyClass {    int val;    int copynumber;  public:    MyClass(int i) {      val = i;      copynumber = 0;      cout << "Inside normal constructor\n";    }      // Copy constructor    MyClass(const MyClass &o) {      val = o.val;      copynumber = o.copynumber + 1;      cout << "Inside copy constructor.\n";    }      ~MyClass() {       if(copynumber == 0)         cout << "Destructing original.\n";       else         cout << "Destructing copy " <<                  copynumber << "\n";    }      int getVal() { return val; }  };    void display(MyClass ob)  {    cout << ob.getVal() << '\n';  }    int main()  {    MyClass a(10);      display(a);      return 0;  } Inside normal constructor Inside copy constructor. 10 Destructing copy 1 Destructing original.