std::unique_ptrとstd::shared_ptrの学習中です。
関連する質問が3つあります。
質問①
std::make_sharedや、std::make_uniqueを使わなくても以下のような他のアドレスで初期化する感じでもOKなのでしょうか?
C++
int index = 10; 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++
int index = 10; // ① unique_ptrの作成 std::unique_ptr<int> A(&index); // ② shared_ptrの作成して②の所有権を移動 std::shared_ptr<int> B(std::move(A));
0 コメント