Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Déplacement des Pointeurs Uniques | Pointeurs Uniques
Pointeurs Intelligents C++
course content

Contenu du cours

Pointeurs Intelligents C++

Pointeurs Intelligents C++

1. Introduction aux Pointeurs Intelligents
2. Pointeurs Uniques
3. Pointeurs Partagés
4. Pointeurs Faibles
5. Sujets Avancés

book
Déplacement des Pointeurs Uniques

Copie non autorisée

Un std::unique_ptr est un pointeur intelligent qui gère un objet alloué dynamiquement et assure sa suppression correcte lorsqu'il sort de la portée. Il a la propriété exclusive de l'objet qu'il gère, ce qui signifie qu'aucun deux std::unique_ptr ne peuvent posséder le même objet simultanément.

cpp

main

copy
123456789
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }

Déplacement d'un pointeur unique

Bien que la copie ne soit pas autorisée, vous pouvez transférer la propriété de l'objet en utilisant std::move. Cela déplace la ressource d'un std::unique_ptr à un autre, laissant le pointeur original vide.

cpp

main

copy
123456789101112131415
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }

Lorsque vous utilisez std::move, la propriété de l'objet est transférée d'un pointeur unique à un autre. Après cela, le pointeur d'origine ne possède plus l'objet, et le nouveau pointeur en devient le propriétaire.

Tâche

Swipe to start coding

Complétez le code suivant de manière à ce que la propriété de l'entier alloué dynamiquement (avec la valeur 42) soit transférée en toute sécurité de ptr1 à ptr2.

Solution

cpp

solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
toggle bottom row

book
Déplacement des Pointeurs Uniques

Copie non autorisée

Un std::unique_ptr est un pointeur intelligent qui gère un objet alloué dynamiquement et assure sa suppression correcte lorsqu'il sort de la portée. Il a la propriété exclusive de l'objet qu'il gère, ce qui signifie qu'aucun deux std::unique_ptr ne peuvent posséder le même objet simultanément.

cpp

main

copy
123456789
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // This will cause a compilation error: copying is not allowed std::unique_ptr<int> second_unique_pointer = first_unique_pointer; }

Déplacement d'un pointeur unique

Bien que la copie ne soit pas autorisée, vous pouvez transférer la propriété de l'objet en utilisant std::move. Cela déplace la ressource d'un std::unique_ptr à un autre, laissant le pointeur original vide.

cpp

main

copy
123456789101112131415
#include <iostream> #include <memory> int main() { std::unique_ptr<int> first_unique_pointer = std::make_unique<int>(42); // Transferring ownership using std::move std::unique_ptr<int> second_unique_pointer = std::move(first_unique_pointer); if (!first_unique_pointer) std::cout << "first_unique_pointer is now empty.\n"; std::cout << "second_unique_pointer owns the value: " << *second_unique_pointer << '\n'; }

Lorsque vous utilisez std::move, la propriété de l'objet est transférée d'un pointeur unique à un autre. Après cela, le pointeur d'origine ne possède plus l'objet, et le nouveau pointeur en devient le propriétaire.

Tâche

Swipe to start coding

Complétez le code suivant de manière à ce que la propriété de l'entier alloué dynamiquement (avec la valeur 42) soit transférée en toute sécurité de ptr1 à ptr2.

Solution

cpp

solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 2
Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
We're sorry to hear that something went wrong. What happened?
some-alt