Constructors in C++ – Features and Types
In this tutorial, we are going to understand about features of constructors, types of constructors, syntax with some examples in C++.
Constructor and its features:
- Constructors are the special members of the class which initialize the object of class.
- A constructor is automatically invoked at the creation of the object.
- It is generally used to initialize variables.
- It has the same name as of class.
It does not have any return type(i.e. void, int, etc).
Types of Constructor in C++:
- Default constructor
- Parameterized constructor
- Copy constructor
Default Constructor
A constructor that doesn’t have parameters. It is invoked automatically and can carry default values. If we do not define constructor it will still define an empty constructor implicitly.
class A
{
public:
int a,b;
A() //Default cosntructor
{
a=10; //random values
b=20;
}
};
int main()
{
A obj; //constructor invoked
cout<<"a= "<<obj.a<<endl;
cout<<"b= "<<obj.b<<endl;
return 0;
}
Output:
a= 10 b= 20
Parameterized Constructor in C++
When we can pass values to constructor it is called parameterized constructor. Passing values to the constructors are same as with functions. It is used to initialize variables in a class.
Class A
{
private:
int x,y;
public:
A(int a,int b) //Parameterized Constructor
{
x=a;
y=b;
}
};
int main()
{
A obj(10,20); //constructor called
cout<<"x= "<<obj.x<<endl; //accessing value by constructor
cout<<"y= "<<obj.y<<endl;
}
Output:
x= 10 y= 20
Copy Constructor in C++
A copy constructor is used to copy the variable of one object into another object. It can be written as :
class_name(const class_name &old_obj);
class A{
private:
int a,b;
public:
A(int x,int y)
{
a=x;
b=y;
}
A(const A &obj1) //copy constructor
{
a=obj1.x;
b=obj1.y;
}
};
int main()
{
A obj1(10,20); //Normal constructor
cout<<obj1.a<<" "<<obj1.b<<endl;
A obj2(obj1); //copy constructor call
cout<<obj2.a<<" "<<obj2.b<<endl;
return 0;
}Output:
10 20 10 20
Recommended:
For suggestion and querry please comment below.
The tutorial was helpful.. Was requesting if I could get the features of the types of constructors