Open In App
Related Articles

When is a Copy Constructor Called in C++?

Like Article
Save Article
Report issue

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. 



// CPP Program to demonstrate the use of copy constructor
#include <iostream>
#include <stdio.h>
using namespace std;
class storeVal {
    // Constructor
    storeVal() {}
    // Copy Constructor
    storeVal(const storeVal& s)
        cout << "Copy constructor has been called " << endl;
// Driver code
int main()
    storeVal obj1;
    storeVal obj2 = obj1;
    return 0;


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.

Last Updated : 29 Nov, 2021
Like Article
Save Article
Share your thoughts in the comments
Similar Reads