unique_ptrを代入するべきか、リセットするべきか?
2023-08-19 13:23:48
質問
所有するオブジェクトの寿命がその所有者にリンクされているという一般的な状況を考えると、私は2つの方法のうちの1つをユニークポインタとして使用することができます .
割り当てることができます。
class owner
{
std::unique_ptr<someObject> owned;
public:
owner()
{
owned=std::unique_ptr<someObject>(new someObject());
}
};
リセット方式を利用することができます。
class owner
{
std::unique_ptr<someObject> owned;
public:
owner()
{
owned.reset(new someObject());
}
};
ベストプラクティスの観点から、どちらかの形式を選ぶべきでしょうか?
EDITです。 みなさん、すみません。簡略化しすぎました。ヒープの確保はctor内ではなく、initialiseメソッド内で行われます。そのため、initialiser listは使えません。
どのように解決するのですか?
から
のドキュメントを参照してください。
unique_ptr
's
operator=
:
を呼び出したかのように、r が指すオブジェクトの所有権を *this に移行させる。
reset(r.release())
を呼び出し、その後にstd::forward<E>(r.get_deleter())
.
そして、その必要なものは
reset
の呼び出しだけなので、これを直接呼び出す方が簡単です。
関連
-
[解決済み] テスト
-
[解決済み] static_cast, dynamic_cast, const_cast, reinterpret_cast はいつ使うべきですか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] std::move()とは何ですか?また、どのような場合に使用するのですか?
-
[解決済み] コンストラクタや関数に unique_ptr 引数を渡すにはどうしたらいいですか?
-
[解決済み] 関数からunique_ptrを返す
-
[解決済み】vectorにunique_ptrをpush_backできないのはなぜですか?
-
[解決済み】std::auto_ptrからstd::unique_ptrへ
-
[解決済み】配列でunique_ptrを使用することはありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】'cout'は型名ではない
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。