Course Curriculum

Default Constructors

Default Constructors

A constructor without any arguments or with default value for every argument, is said to be default constructor. What is the significance of default constructor? Will the code be generated for every default constructor? Will there be any code inserted by the compiler to the user implemented default constructor behind the scenes?

The compiler will implicitly declare default constructor if not provided by programmer, will define it when in need. 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 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 default constructor. The compiler needs to insert code to call the default constructors of base class/embedded object.

#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 construtor
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;
};

int main()
{
Base base;

B b;
C c;
D d;

return 0;
}
Output:
A Constructor
A Constructor
C Constructor
A Constructor
D Constructor

When do we use Initializer List in C++? (Prev Lesson)
(Next Lesson) Private Destructor