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é parunique_ptrest 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 derniershared_ptrqui y pointe est détruit ou redirigé. -
std::weak_ptr— référence faible à un objet géré parshared_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
}
}