The Constructor in C++ is a function, a method in the class, but it is a ‘special method’ that is automatically called when an object of a class is created. We don’t need to call this function. Whenever a new object of a class is created, the Constructor allows the class to initialize member variables or allocate storage. This is why the name Constructor is given to this special method. Here is a simple constructor class example below,
1 2 3 4 5 6 7 8 9 10 |
class myclass { public: myclass() { std::cout << "myclass is constructed!\n"; }; }; |
There are different constructor typesin classes and the Copy Constructor is one of these. Copy Constructors not only used in classes but also used with struct and union data types Do you want to learn what is copy constructor or what kind of methods we have that we can declare and use copy constructors ? In this post, we will try to explain how to use Copy Constructor with examples.
The Copy Constructor in classes (i.e class_name)
is a non-template constructor whose first parameter is class_name&, const class_name&, volatile class_name&, or const volatile class_name& . It can be used with no other parameters or with the rest of the parameters all have default values.
The Copy Constructor is a constructor type for classes that class_name must name the current class, or it should be a qualified class name when it is declared at namespace scope or in a friend declaration.
Forced Copy Constructor (Default Copy Constructor)
In C++, Forced Copy Constructor also called as Default Copy Constructor and very useful. In this method, we can easily force a copy constructor of a class to be generated by the compiler. That means you don’t need to copy values of each properties of the source class to the destination class, all properties will be copied with their values and methods.
Syntax,
1 2 3 |
class_name ( const class_name & ) = default; |
An example with a class,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> class myclass { public: int param; myclass() // Default Constructor { }; myclass(const myclass& ) = default; // Forced Copy Constructor with atrributes as default }; int main() { myclass class1; class1.param=100; std::cout << class1.param << '\n' ; // Using Forced Copy Constructor myclass class2(class1); std::cout << class2.param << '\n' ; getchar(); return 0; } |
Here, copy constructor copies not only class properties and methods but also copies values of current class without any definition by user. This method is very useful to copy all parameters with their values and methods in one time. Result will be as follows,
1 2 3 4 |
100 100 |