Open In App

Copy Constructor vs Assignment Operator in C++

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Copy constructor and Assignment operator are similar as they are both used to initialize one object using another object. But, there are some basic differences between them:

Copy constructor  Assignment operator 
It is called when a new object is created from an existing object, as a copy of the existing object This operator is called when an already initialized object is assigned a new value from another existing object. 
It creates a separate memory block for the new object. It does not create a separate memory block or new memory space.
It is an overloaded constructor. It is a bitwise operator. 
C++ compiler implicitly provides a copy constructor, if no copy constructor is defined in the class. A bitwise copy gets created, if the Assignment operator is not overloaded. 

Syntax:

className(const className &obj) {

// body 

}

Syntax: 

className obj1, obj2;

obj2 = obj1;

Consider the following C++ program. 

CPP




// CPP Program to demonstrate the use of copy constructor
// and assignment operator
#include <iostream>
#include <stdio.h>
using namespace std;
 
class Test {
public:
    Test() {}
    Test(const Test& t)
    {
        cout << "Copy constructor called " << endl;
    }
 
    Test& operator=(const Test& t)
    {
        cout << "Assignment operator called " << endl;
        return *this;
    }
};
 
// Driver code
int main()
{
    Test t1, t2;
    t2 = t1;
    Test t3 = t1;
    getchar();
    return 0;
}


Output

Assignment operator called 
Copy constructor called 

Explanation: Here, t2 = t1;  calls the assignment operator, same as t2.operator=(t1); and  Test t3 = t1;  calls the copy constructor, same as Test t3(t1);

Must Read: When is a Copy Constructor Called in C++?


Last Updated : 10 May, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads