セクション 1. 章 3
single
ユニークポインタのムーブ
メニューを表示するにはスワイプしてください
コピーは許可されていません
std::unique_ptr は動的に確保されたオブジェクトを管理し、そのスコープを抜けたときに適切に削除するスマートポインタです。管理対象オブジェクトに対して排他的所有権を持ち、同じオブジェクトを同時に複数の std::unique_ptr が所有することはできません。
main.cpp
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; }
ユニークポインタのムーブ
コピーは許可されていませんが、std::move を使ってオブジェクトの所有権を移動することができます。これにより、リソースは一方の std::unique_ptr から他方へ移され、元のポインタは空になります。
main.cpp
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'; }
std::move を使用すると、オブジェクトの所有権が一方のユニークポインタから別のユニークポインタへ移動します。この操作の後、元のポインタはオブジェクトの所有権を失い、新しいポインタがその所有者となります。
タスク
スワイプしてコーディングを開始
次のコードを完成させ、動的に確保された整数(値は42)の所有権が unique_pointer_a から unique_pointer_b へ安全に移動されるようにしてください。
解答
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 3
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください