Sobes.tech
Junior — Middle

Pouvez-vous nommer les types de pointeurs intelligents implémentés dans la bibliothèque standard de C++?

sobes.tech IA

Réponse de l'IA

La bibliothèque standard de C++ implémente trois principaux types de pointeurs intelligents:

  • std::unique_ptr — assure la propriété exclusive de l'objet. L'objet pointé par unique_ptr est automatiquement détruit à la sortie de la portée du pointeur. Il ne peut pas être copié, seulement déplacé.

  • std::shared_ptr — réalise une propriété partagée de l'objet. L'objet est détruit lorsque le dernier shared_ptr qui y pointe est détruit ou redirigé.

  • std::weak_ptr — référence faible à un objet géré par shared_ptr. N'affecte pas la durée de vie de l'objet, permet de vérifier si l'objet existe avant d'y accéder.

Exemple d'utilisation:

#include <memory>
#include <iostream>

int main() {
    std::unique_ptr<int> uptr = std::make_unique<int>(10);
    std::cout << *uptr << std::endl; // 10

    std::shared_ptr<int> sptr1 = std::make_shared<int>(20);
    std::shared_ptr<int> sptr2 = sptr1; // partage de propriété
    std::cout << *sptr2 << std::endl; // 20

    std::weak_ptr<int> wptr = sptr1;
    if (auto spt = wptr.lock()) { // vérifie si l'objet existe
        std::cout << *spt << std::endl; // 20
    }
}