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++

Glissez pour afficher le menu

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
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

close

Awesome!

Completion rate improved to 5.56

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 !

close

Awesome!

Completion rate improved to 5.56

Glissez pour afficher le menu

some-alt