How to Implement a Copy Constructor in a Derived Class in C++
Last Updated :
27 Mar, 2024
In object-oriented programming, a copy constructor is a special member function that initializes a new object as a copy of an existing object. In this article, we will learn how to implement a copy constructor in a derived class.
Implementing Copy Constructor in a Derived Class in C++
In C++, when we implement a constructor in an inherited class, we need to explicitly call the corresponding constructor of the base class also so that we can avoid implement same constructor logic again and again. Some thing happens with copy constructor.
To implement a copy constructor in a derived class in C++, we have to call the copy constructor of the base class too in the definition as shown in the below syntax
Syntax to Create a Copy Constructor in a Derived Class in C++
Derived(const Derived& other_Object) : Base(other_Object) {
// Derived class copy constructor body
}
C++ Program to Implement a Copy Constructor in a Derived Class
The following program illustrates how we can implement a copy constructor in a derived class.
C++
// C++ Program to illustrate how we can implement a copy
// constructor in a derived class
#include <iostream>
using namespace std;
// Base class
class Base {
private:
int baseData;
public:
Base(int data)
: baseData(data)
{
cout << "Base constructor called with data: "
<< data << endl;
}
// Copy constructor
Base(const Base& other)
: baseData(other.baseData)
{
cout << "Base copy constructor called" << endl;
}
void display()
{
cout << "Base data: " << baseData << endl;
}
};
// Derived class
class Derived : public Base {
private:
int derivedData;
public:
Derived(int baseData, int derivedData)
: Base(baseData)
, derivedData(derivedData)
{
cout << "Derived constructor called with data: "
<< derivedData << endl;
}
// defining the copy constructor of derived class and
// calling the base class copy constructor too
Derived(const Derived& other)
: Base(other)
, derivedData(other.derivedData)
{
cout << "Derived copy constructor called" << endl;
}
void display()
{
// Call base class's display function
Base::display();
cout << "Derived data: " << derivedData << endl;
}
};
int main()
{
Derived obj1(10, 20);
// Copy constructor of derived class is called
Derived obj2 = obj1;
cout << "\nObject 1:" << endl;
obj1.display();
cout << "\nObject 2:" << endl;
obj2.display();
return 0;
}
Output
Base constructor called with data: 10
Derived constructor called with data: 20
Base copy constructor called
Derived copy constructor called
Object 1:
Base data: 10
Derived data: 20
Object 2:
Base data: 10
Derived data: 20
Time Complexity: O(1)
Auxiliary Space: O(1)
Similar Reads
How to Declare a Copy Constructor in a Derived Class? In C++, a copy constructor is a constructor that initializes an object as a copy of an existing object of the same class. In this article, we will learn how to declare a copy constructor in a derived class. Declaring a Copy Constructor in a Derived ClassWe can declare a copy constructor in a derived
3 min read
How to Implement a Copy Constructor for Deep Copying? In C++, the copy constructor enables us to initialize an object using another object of the same class. In this article, we will learn, how to implement a copy constructor for deep copying. Implementing a Copy Constructor for Deep CopyingIn C++, a copy constructor is used to create a copy of an obje
3 min read
How to Create a Class with Constructors and Destructors in C++? In C++, a class is a user-defined data type encapsulating data members and member functions. The constructors and destructors are special member functions of a class used for initializing objects and cleaning up resources respectively. In this article, we will discuss how to create a class with cons
2 min read
How to Define a Move Constructor in C++? In C++, we have a move constructor which is a part of C++11 move semantics and is used to handle resources for temporary and rvalue objects. In this article, we will learn how to write a move constructor in C++. How to Write Move Constructor in C++?The move constructor is defined similarly to a copy
2 min read
How to Override a Base Class Method in a Derived Class in C++? Function overriding is a concept in object-oriented programming languages, in which a function/method of a parent class is redefined in its child class to change its behavior for the objects of the child class. In this article, we are going to learn how to override a base class function in a derived
2 min read