Skip to content
Related Articles
Open in App
Not now

Related Articles

When is a Copy Constructor Called in C++?

Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 29 Nov, 2021
Improve Article
Save Article

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.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!