Default Constructors in C++ - GeeksforGeeks

09 Jan, 2022
A constructor without any arguments or with the default value for every argument is said to be the Default constructor. 
What is the significance of the default constructor? 
They are used to create objects, which do not have any having specific initial value. 
Is a default constructor automatically provided?
If no constructors are explicitly declared in the class, a default constructor is provided automatically. 
Will there be any code inserted by the compiler to the user implemented default constructor behind the scenes?
The compiler will implicitly declare the default constructor if not provided by the programmer, will define it when in need. The compiler-defined default constructor is required to do certain initialization of class internals. It will not touch the data members or plain old data types (aggregates like an array, structures, etc...). However, the compiler generates code for the default constructor based on the situation.
Consider a class derived from another class with the default constructor, or a class containing another class object with the default constructor. The compiler needs to insert code to call the default constructors of the base class/embedded object.
C++
// CPP program to demonstrate Default constructors#include <iostream>using namespace std;  class Base {public:    // compiler "declares" constructor};  class A {public:    // User defined constructor    A() { cout << "A Constructor" << endl; }      // uninitialized    int size;};  class B : public A {    // compiler defines default constructor of B, and    // inserts stub to call A constructor      // compiler won't initialize any data of A};  class C : public A {public:    C()    {        // User defined default constructor of C        // Compiler inserts stub to call A's constructor        cout << "C Constructor" << endl;          // compiler won't initialize any data of A    }};  class D {public:    D()    {        // User defined default constructor of D        // a - constructor to be called, compiler inserts        // stub to call A constructor        cout << "D Constructor" << endl;          // compiler won't initialize any data of 'a'    }  private:    A a;};  // Driver Codeint main(){    Base base;      B b;    C c;    D d;      return 0;}
A Constructor
A Constructor
C Constructor
A Constructor
D Constructor
 
There are different scenarios in which the compiler needs to insert code to ensure some necessary initialization as per language requirements. We will have them in upcoming posts. Our objective is to be aware of C++ internals, not to use them incorrectly. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Shaiwal Sharma
simmytarika5
anshikajain26
C Language
C++
School Programming
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Dynamic Memory Allocation in C using malloc(), calloc(), free() and realloc()
std::sort() in C++ STL
Bitwise Operators in C/C++
rand() and srand() in C/C++
Core Dump (Segmentation fault) in C/C++
Vector in C++ STL
Initialize a vector in C++ (6 different ways)
Socket Programming in C/C++
std::sort() in C++ STL
Virtual Function in C++