Uses of initializer List in C++
This tutorial will focus on when to use the initializer list in C++.
Initializer Lists in C++:
In C++, an initializer list is used to initialize a class’s data members.
It will begin after the constructor name and its parameters.
Initializer List begins with a semicolon and the variables after this along with their values.
Syntax:
Constructorname(datatype value1, datatype value2):datamember(value1),datamember(value2)
{
...
}C++ code showing Initializer List:
#include <bits/stdc++.h>
using namespace std;
class A
{
private:
int data;
public:
// Initializer List
A(int d):data(d)
{
cout << "The Value initialized is: " << data;
}
};
int main()
{
//initializing the object
A obj1(50);
return 0;
}Output:
The Value initialized is: 50
Uses of initializer list:
1) For Initializing a data member of reference type:
When the reference type data member is to be initialized, then we will use an initialization list.
These reference types can only be initialized once and are immutable.
#include <bits/stdc++.h>
using namespace std;
class A
{
private:
int &r1;
public:
A(int &datamem):r1(datamem)
{
cout << "The value of reference type data member is: " << r1;
}
};
int main()
{
int r1=50;
A obj1(r1);
return 0;
}Output:
The value of reference type data member is: 50
2) For Initializing a const data member:
The const data members can be initialized only once and that can be done in the initialization list.
#include <bits/stdc++.h>
using namespace std;
class A
{
private:
const int x;
public:
A(int datamem):x(datamem)
{
cout << "The const value passed is: " << x;
}
};
int main()
{
A obj1(50);
}Output:
The const value passed is: 50
3) For Initializing the objects that do not have default constructor:
When the parent class does not have a default constructor, then using this initializer list we can have that.
#include<iostream>
using namespace std;
class A_
{
public:
A_(int m)
{
cout <<"The constructor value is: "<< m << endl;
}
};
class initializer_:public A_
{
public:
// This is the default constructor using initializer list
initializer_():A_(50)
{
cout << "This is inside the Constructor of initializer list" << endl;
}
};
int main()
{
initializer_ obj1;
return 0;
}Output:
The constructor value is: 50
This is inside the Constructor of the initializer list
4) For Performance improvement:
Using an initializer list we can avoid the creation of temporary objects.
By this, we can improve the performance.
These are the uses of the initializer list.
Leave a Reply