Les constructeurs sont des méthodes particulières. Ils sont appelés à chaque fois qu'un objet est créé. Ils ont donc pour rôle d'initialiser des objets de façon correcte. En tant que fonction, ils peuvent avoir des arguments ce qui permet de créer des objets en leur donnant des valeurs si cela est nécessaire. Les constructeurs n'ont pas de type de retour.
En C++ deux types de constructeurs sont particulièrement importants. Ce sont:
- les constructeurs sans argument qui permettent la construction de tableaux d'objets.
- les constructeurs de recopie. Ces constructeurs prennent en argument un objet de la même classe que ceux qu'il créent et en font une copie. Cela est nécessaire pour les objets contenant des pointeurs. En effet, par exemple lors d'un appel de fonction, il y a recopie des arguments, comme en C, afin d'éviter qu'une modification sur un paramètre ne se répercute sur l'objet initial. Cependant, cette recopie de l'adresse contenue dans le pointeur et non de l'objet pointé. De ce fait si l'on modifie cet objet, il est donc impératif de créer un constructeur de recopie qui fasse une copie "en profondeur" des objets.
Le constructeur par défaut sera déclaré comme suit: classe (const classe& objet).
Le const indique que l'objet passé en argument ne peut pas être modifié. Cela renforce la sécurité dans le programme et permet la recopie d'objet déclaré constant. Le & indique que le paramètre est passé par adresse, c'est à dire que l'objet est passé directement sans recopie.
Il est nécessaire d'avoir un constructeur sans argument pour pouvoir construire des tableaux d'objets.
Le masquage des données se faisant au niveau de la classe et non de l'objet, un objet peut avoir accès aux membres cachés d'un autre objet de même classe.
L'appel aux membres d'un objet se fait comme pour une structure en C: par objet.membre ou pointeur_objet->membre.
Le constructeur sans argument
Le constructeur de copie