Le constructeur par défaut est un constructeur qui ne prend aucun paramètre. C'est le constructeur qui est appelé pour initialiser l'objet par défaut.
std::string nom; // Création d'un object chaîne de caractère // puis appel du constructeur par défaut. std::string prenom;
Le constructeur par défaut est déclaré comme le constructeur n'ayant aucun paramètre.
class MyClass { public: MyClass() // Constructeur par défaut. {} };
Une bonne pratique consiste à ce que le programmeur s'assure que le constructeur par défaut initialise l'ensemble des champs de l'objet à une valeur donnée.
Par défaut, c'est à dire sans action de la part du programmeur, les champs sont initialisés comme suit :
int
, char
, …, aucune initialisation n'est réalisée et la valeur contenu dans le champ est indéfini. Attention, ceci peut amener des comportements indésirables et il est souhaitable d'initialiser le champ à une valeur définie.En l'absence de tout autre constructeur spécialisé, un constructeur par défaut est automatiquement généré.
Ce constructeur par défaut est :
Pour la classe MyClass
dérivant des classes BaseClass
et ImplementationClass
et possédant un champ entier value
, le constructeur par défaut généré automatiquement correspond au constructeur suivant
class MyClass: public BaseClass, private ImplementationClass { private: int value; public: MyClass(): BaseClass(), ImplementationClass(), value() // Correspond au constructeur par défaut généré automatiquement // en C++. {} };
Comme corollaire, pour pouvoir générer automatiquement un constructeur par défaut, il est impératif que l'ensemble des champs et des classes de bases exposent un constructeur par défaut ou un mécanisme d'initialisation par défaut. Si ce n'est pas le cas, le compilateur ne génèrera pas de constructeur par défaut.