Copy constructor invoked when passing an object to a function : object parameters « Function « C++ Tutorial






#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.








7.5.object parameters
7.5.1.Pass an object to a function
7.5.2.Constructors, destructors, and passing objects
7.5.3.Copy constructor invoked when passing an object to a function
7.5.4.Passing pointers to objects
7.5.5.Data slicing with passing by value
7.5.6.Passing Objects to Functions