When is a Copy Constructor Called in C++?
A copy constructor is a member function that initializes an object using another object of the same class. The Copy constructor is called mainly when a new object is created from an existing object, as a copy of the existing object.
In C++, a Copy Constructor may be called for the following cases:
1) When an object of the class is returned by value.
2) When an object of the class is passed (to a function) by value as an argument.
3) When an object is constructed based on another object of the same class.
4) When the compiler generates a temporary object.
Copy constructor has been called
It is, however, not guaranteed that a copy constructor will be called in all these cases, because the C++ Standard allows the compiler to optimize the copy away in certain cases, one example being the Return Value Optimization (sometimes referred to as RVO).
Note: C++ compiler implicitly provides a copy constructor, if no copy constructor is defined in the class.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.