std::unique_ptrとstd::shared_ptrの学習中です。
関連する質問が3つあります。
質問①
std::make_sharedや、std::make_uniqueを使わなくても以下のような他のアドレスで初期化する感じでもOKなのでしょうか?
C++
1 int index = 10; 2 std::unique_ptr<int> A(&index);
質問②
①がOKだとしたら、std::make_uniqueを使用する意味は何ですか?
質問③
std::unique_ptrは所有権を1つに限定するポインタ。
td::shared_ptrは所有権が複数で共有可能でどこからも参照されなくなったら開放される変数。
という理解なのですが、以下の例では、Aをstd::shared_ptrであるBにセットした場合、Aが所有していたアドレスはstd::shared_ptrになるということだと思いますが、この時、共有されるようになるため、std::unique_ptrにした意味がなくなっているという理解でいいでしょうか?
C++
1 int index = 10; 2 3 // ① unique_ptrの作成 4 std::unique_ptr<int> A(&index); 5 6 // ② shared_ptrの作成して②の所有権を移動 7 std::shared_ptr<int> B(std::move(A));

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/24 06:42 編集
退会済みユーザー
2022/09/24 06:59
2022/09/24 21:27
2022/09/26 01:47