Dynamic Constructor in C++ with Examples
Last Updated :
28 Aug, 2023
When allocation of memory is done dynamically using dynamic memory allocator new in a constructor, it is known as dynamic constructor. By using this, we can dynamically initialize the objects.
Example 1:
C++
#include <iostream>
using namespace std;
class geeks {
const char * p;
public :
geeks()
{
p = new char [6];
p = "geeks" ;
}
void display() { cout << p << endl; }
};
int main()
{
geeks obj;
obj.display();
}
|
Explanation: In this we point data member of type char which is allocated memory dynamically by new operator and when we create dynamic memory within the constructor of class this is known as dynamic constructor.
Example 2:
C++
#include <iostream>
using namespace std;
class geeks {
int * p;
public :
geeks()
{
p = new int [3]{ 1, 2, 3 };
for ( int i = 0; i < 3; i++) {
cout << p[i] << " " ;
}
cout << endl;
}
};
int main()
{
geeks* ptr = new geeks[5];
}
|
Output
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
dynamically .
Explanation: In this program we have created array of object dynamically. The first object is ptr[0], second is ptr[1] and so on . For each object creation default constructor is called and for each object memory is allocated to pointer type variable by new operator.
Example 3:
C++
#include <iostream>
using namespace std;
class geeks {
int * p;
public :
geeks()
{
p = new int ;
*p = 0;
}
geeks( int x)
{
p = new int ;
*p = x;
}
void display()
{
cout << *p << endl;
}
~geeks()
{
delete p;
}
};
int main()
{
geeks obj1 = geeks();
obj1.display();
geeks obj2 = geeks(7);
obj2.display();
}
|
Explanation: In this integer type pointer variable is declared in class which is assigned memory dynamically when the constructor is called. When we create object obj1, the default constructor is called and memory is assigned dynamically to pointer type variable and initialized with value 0. And similarly when obj2 is created parameterized constructor is called and memory is assigned dynamically.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...