Open In App

Dynamic Constructor in C++ with Examples

Last Updated : 28 Aug, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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:
    // default constructor
    geeks()
    {
 
        // allocating memory at run time
        p = new char[6];
        p = "geeks";
    }
 
    void display() { cout << p << endl; }
};
 
int main()
{
    geeks obj;
    obj.display();
}


Output

geeks

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:
    // default constructor
    geeks()
    {
 
        // allocating memory at run time
        // and initializing
        p = new int[3]{ 1, 2, 3 };
 
        for (int i = 0; i < 3; i++) {
            cout << p[i] << " ";
        }
 
        cout << endl;
    }
};
 
int main()
{
 
    // five objects will be created
    // for each object
    // default constructor would be called
    // and memory will be allocated
    // to array dynamically
    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:
    // default constructor
    geeks()
    {
 
        // allocating memory at run time
        p = new int;
        *p = 0;
    }
 
    // parameterized constructor
    geeks(int x)
    {
        p = new int;
        *p = x;
    }
    void display()
    {
      cout << *p << endl;
    }
 
    // Deallocate the dynamically allocated memory
    ~geeks()
    {
      delete p;
    }
};
 
int main()
{
 
    // default constructor would be called
    geeks obj1 = geeks();
    obj1.display();
 
    // parameterized constructor would be called
    geeks obj2 = geeks(7);
    obj2.display();
}


Output

0
7

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
Previous
Next
Share your thoughts in the comments

Similar Reads