In this tutorial, we are going to learn about constructors.
Constructor is a special member function of a class, which is executed whenever we create new objects of that class.
A constructor have a very different syntax as compared to other member functions.
class students { public: // create a constructor students() { // code } };
You may have noticed in the above code that the constructor have same name as its class i.e students .
Also a constructor don’t have any return type, not even void .
A default constructor do not contain any parameters, like the constructor student() in the above example.
Following example shows how a default constructor invoked.
Example:
#includeusing namespace std; class students { public: students() { cout<<"Default Constructor Invoked"<<endl; } }; int main() { students s1,s2; return 0; }
Output:
Default Constructor Invoked Default Constructor Invoked
Explanation:: in above example, we have a default constructor students(), having a line of code in it. When we created two objects s1 and s2 in main(), the constructor got automatically called and executed two times without being called explicitly.
In C++, we can also have parameters in a constructor known as Parameterized constructor.
Look at the following example
Example:
#include <iostream> using namespace std; class students { public: string name; int roll_no; char grade; students(string n,int r, char g) { name = n; roll_no = r; grade = g; } void display() { cout<< name <<" "<< roll_no<<" "<< grade<< endl; } }; int main(void) { students s1 =students(Sonoo,89,'A'); students s2=students("Monoo",50,'B'); s1.display(); s2.display(); return 0; }
Output:
Sonoo 89 A Monoo 50 B
in above example, the constructor students is now parameterised hence we can pass values in it and get the result without calling them explicitly, just by creating objects.
Note:If we have not defined a constructor in our class, then the C++ compiler will automatically create a default constructor with an empty code and no parameters.
A copy constructor is a member function which initializes an object using another object of same class.
The syntax for copy constructor is given below.
class students{ ... .. ...; public: students(students &obj){ //copy constructor ... .. ...; } };
Syntax:
className targetObject(sourceObject);
or
className targetObject=sourceObject;
lets understand it with help of an example.
Example:
In this program, we have a parameterized constructor and a copy constructor.
class students{ int roll_no; char grade; public: students(int a, char b){ //parameterized constructor roll_no=a; grade=b; } students(students &t){ //copy constructor roll_no=t.roll_no; grade=t.grade; } int display(){ cout<<"roll no : "<< roll_no << endl; cout<<"grade : "<< grade<< endl; return 0; } }; int main(){ cout<<"parameterized constructor"<< endl; students s(12,'A'); //object created and value passed to parameterized constructor s.display(); cout<<"copy constructor"<< endl; students c(t); //object created and value passed to copy constructor c.display(); return 0; }
In this program , first we are passing values to parameterized constructor by creating an object, S. then we are passing the same object to a copy constructor by creating its object, C. Hence, values of object S got copied in C.
Output:
parameterized constructor roll no : 12 grade : A copy constructor roll no : 12 grade : A
When we need copy constructor ?
In C++, a Copy Constructor may be called in following cases: