Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Qu'est-ce Qu'un Constructeur de la Classe | Constructeurs et Destructeurs
C++ Oop
course content

Contenu du cours

C++ Oop

C++ Oop

1. Fondamentaux de la POO en C++
2. Constructeurs et Destructeurs
3. Aperçu de l'Encapsulation
4. Aperçu de l'Héritage
5. Aperçu du Polymorphisme

book
Qu'est-ce Qu'un Constructeur de la Classe

En utilisant des constructeurs, vous pouvez simplifier la création d'objets. Sans constructeur, vous devriez définir chaque propriété individuellement et pourriez avoir besoin d'appeler plusieurs méthodes juste pour mettre l'objet dans un état utilisable.

Le but principal d'un constructeur est d'initialiser la nouvelle instance créée. Il peut définir les valeurs initiales des attributs en fonction des paramètres passés au constructeur, garantissant que l'objet commence dans un état valide.

Syntaxe du Constructeur

Bien que le processus de développement d'un constructeur puisse sembler simple, il implique de nombreuses considérations spécifiques. L'approche générale pour en créer un est :

  • Nom : Un constructeur a le même nom que la classe elle-même.
  • Type de Retour : Les constructeurs n'ont pas de type de retour, même pas void.
  • Paramètres : Les constructeurs peuvent prendre des paramètres. Ils peuvent être surchargés avec différents ensembles de paramètres pour permettre différentes façons d'initialiser des objets.
  • Invocation Automatique : Un constructeur est appelé automatiquement par le compilateur lorsqu'un objet est créé. Cela inclut la création avec le mot-clé new, la déclaration directe de variable, ou par d'autres moyens comme la construction par copie.

Constructeur par Défaut

Un constructeur par défaut est un constructeur qui peut être invoqué sans aucun argument. Voici comment les constructeurs par défaut sont définis et utilisés :

cpp

main

copy
1234567891011121314
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }

Vous pouvez expérimenter avec le code ci-dessus. La logique écrite dans la méthode Example() est exécutée chaque fois qu'une instance de la classe est créée.

Remarque

Essayez d'ajouter un autre objet ou de changer la logique à l'intérieur du constructeur.

Lorsque vous créez une classe sans définir explicitement de constructeurs, le compilateur génère automatiquement un constructeur par défaut pour vous. Son comportement varie en fonction des types de variables membres dans votre classe, comme s'il s'agit de types de données fondamentaux, ont des constructeurs par défaut, ou sont des types définis par l'utilisateur.

cpp

main

copy
123456789101112
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }

Dans l'exemple ci-dessus, l'attribut est un type de données fondamental. Le constructeur par défaut généré automatiquement n'initialise pas les variables membres de type intégré. Elles auront des valeurs indéterminées si vous créez un objet et n'initialisez pas explicitement ces champs.

Remarque

Vous pourriez constater que le compilateur fournit une valeur cohérente pour la variable value, mais la norme ne l'exige pas et il est possible qu'elle contienne une valeur indésirable.

D'autre part, lors de l'utilisation de types définis par l'utilisateur tels que les classes, le constructeur par défaut invoquera le constructeur par défaut du membre pour initialiser l'objet membre.

cpp

main

copy
123456789101112131415161718
#include <iostream> class MemberExample { public: MemberExample() { std::cout << "MemberExample: Constructor was called!" << std::endl; } }; class Example { public: MemberExample obj; }; int main() { Example obj; }
Quand le constructeur est-il appelé ?

Quand le constructeur est-il appelé ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt