Menu
Coddy logo textTech

Bases des Ctors et Dtors

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy — leçon 10 sur 104.

Un constructeur est une méthode spéciale qui s'exécute automatiquement lorsqu'un objet est créé. Un destructeur s'exécute lorsque l'objet est détruit.

Constructeur par défaut

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
};

Constructeur paramétré

Book(std::string title, int pages) {
    this->title = title;
    this->pages = pages;
}

Surcharge de constructeur — plusieurs constructeurs

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
    
    Book(std::string title) {
        this->title = title;
        this->pages = 0;
    }
    
    Book(std::string title, int pages) {
        this->title = title;
        this->pages = pages;
    }
};

Destructeur — s'exécute lorsque l'objet est détruit

class Book {
public:
    ~Book() {
        std::cout << "Book destroyed" << std::endl;
    }
};

Création d'objets avec différents constructeurs

Book book1;                        // Constructeur par défaut
Book book2("Harry Potter");         // Un paramètre
Book book3("1984", 328);            // Deux paramètres

Les constructeurs ont le même nom que la classe sans type de retour. Les destructeurs utilisent ~ClassName() et sont appelés automatiquement dans l'ordre inverse de leur création lorsque les objets sortent de la portée.

challenge icon

Défi

Moyen

Créez une classe Product avec trois constructeurs surchargés et un destructeur :

  • Constructeur à 3 paramètres : name, price, stock
  • Constructeur à 2 paramètres : name, price (stock = 0)
  • Constructeur par défaut : name = "Unknown", price = 0, stock = 0
  • Destructeur : affiche "Destroying: <name>"

Aide-mémoire

Un constructeur est une méthode spéciale qui s'exécute automatiquement lorsqu'un objet est créé. Un destructeur s'exécute lorsque l'objet est détruit.

Constructeur par défaut — initialise avec des valeurs par défaut :

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
};

Constructeur paramétré — accepte des paramètres :

Book(std::string title, int pages) {
    this->title = title;
    this->pages = pages;
}

Surcharge de constructeur — plusieurs constructeurs avec des paramètres différents :

class Book {
private:
    std::string title;
    int pages;

public:
    Book() {
        this->title = "Unknown";
        this->pages = 0;
    }
    
    Book(std::string title) {
        this->title = title;
        this->pages = 0;
    }
    
    Book(std::string title, int pages) {
        this->title = title;
        this->pages = pages;
    }
};

Destructeur — s'exécute lorsque l'objet est détruit, utilise ~ClassName() :

class Book {
public:
    ~Book() {
        std::cout << "Book destroyed" << std::endl;
    }
};

Création d'objets avec différents constructeurs :

Book book1;                        // Default constructor
Book book2("Harry Potter");         // One parameter
Book book3("1984", 328);            // Two parameters

Les constructeurs ont le même nom que la classe sans type de retour. Les destructeurs sont appelés automatiquement dans l'ordre inverse de la création lorsque les objets sortent de leur portée.

Essayez vous-même

#include <iostream>
#include "Product.h"

int main() {
    std::string name;
    int price, stock;
    std::getline(std::cin, name);
    std::cin >> price >> stock;
    
    Product product1(name, price, stock);
    Product product2("Keyboard", 79);
    Product product3;
    
    std::cout << "Product 1: " << product1.getName() << " - $" << product1.getPrice() << " (Stock: " << product1.getStock() << ")" << std::endl;
    std::cout << "Product 2: " << product2.getName() << " - $" << product2.getPrice() << " (Stock: " << product2.getStock() << ")" << std::endl;
    std::cout << "Product 3: " << product3.getName() << " - $" << product3.getPrice() << " (Stock: " << product3.getStock() << ")" << std::endl;
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet