Passer au contenu principal
eLearner.app
Module 4 · Leçon 2 sur 210/18 dans le cours~12 min
Leçons du module (2/2)

Constructeurs et Destructeurs

Les constructeurs et les destructeurs sont des fonctions membres spéciales qui gèrent le cycle de vie des objets : leur création (initialisation) et leur destruction (libération des ressources).

Les Constructeurs

Un constructeur est appelé automatiquement lorsqu'un objet de la classe est créé en mémoire.

  • Il a le même nom que la classe.
  • Il n'a pas de type de retour (pas même void).
  • Il peut être surchargé (overloaded) pour accepter différents ensembles de paramètres.
Code
#include <iostream>
#include <string>

class Item {
private:
    std::string name;
    double price;

public:
    // Costruttore con parametri
    Item(std::string itemName, double itemPrice) {
        name = itemName;
        price = itemPrice;
        std::cout << "Oggetto " << name << " creato." << std::endl;
    }

    void display() {
        std::cout << name << ": " << price << " euro" << std::endl;
    }
};

int main() {
    // Chiamata implicita al costruttore passando i parametri
    Item book("Libro C++", 29.99);
    book.display();
    return 0;
}

Constructeur par Défaut

Si vous ne définissez aucun constructeur, le compilateur C++ en génère un par défaut sans paramètres. Cependant, si vous écrivez un constructeur personnalisé avec des paramètres, le constructeur par défaut automatique n'est plus généré, et vous devrez le définir explicitement si vous en avez besoin :

Code
class Point {
public:
    int x;
    int y;

    // Costruttore di default esplicito
    Point() {
        x = 0;
        y = 0;
    }
};

Les Destructeurs

Un destructeur est appelé automatiquement lorsque l'objet sort de la portée (scope) ou est explicitement supprimé de la mémoire.

  • Il a le même nom que la classe précédé d'un tilde ~ (ex. ~Item()).
  • Il n'accepte aucun paramètre et n'a pas de type de retour.
  • Il est utilisé pour libérer les ressources occupées (ex. fermer des fichiers, libérer la mémoire allouée dynamiquement).
Code
class ResourceManager {
public:
    ~ResourceManager() {
        // Codice di pulizia
        std::cout << "Risorse liberate." << std::endl;
    }
};

À vous de jouer

Exercice#cpp.m4.l2.e1
Tentatives : 0Chargement…

Définissez une classe User avec un membre privé std::string username. Ajoutez un constructeur public qui accepte une chaîne de caractères (User(std::string name)) et l'utilise pour initialiser username. Ajoutez un getter public std::string getUsername() qui renvoie username. Dans le main, créez un User en lui passant 'Alice' comme nom et affichez l'username obtenu à l'aide de std::cout.

Chargement de l'éditeur…
Afficher l'indice

Le constructeur a le même nom que la classe et ne spécifie aucun type de retour, pas même `void`.

Solution disponible après 3 tentatives

Exercice#cpp.m4.l2.e2
Tentatives : 0Chargement…

Définissez une classe Point avec deux membres publics entiers x et y. Ajoutez un constructeur par défaut (sans paramètres) qui initialise x et y à 0. Dans le main, créez un objet Point en utilisant le constructeur par défaut et affichez x et y.

Chargement de l'éditeur…
Afficher l'indice

Le constructeur par défaut ne prend pas d'arguments : `Point() { x = 0; y = 0; }`.

Solution disponible après 3 tentatives