「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C ++の関数またはコンストラクターパラメーターとして排他的なポインターを渡す方法は?

C ++の関数またはコンストラクターパラメーターとして排他的なポインターを渡す方法は?

2025-06-16に投稿されました
ブラウズ:402

How Should I Pass Unique Pointers as Function or Constructor Arguments in C  ?

コンストラクターと機能のパラメーターとしてユニークなポインターを管理する

ユニークなポインター( unique_ptr

この方法は、関数/オブジェクトへの一意のポインターの所有権を転送します。ポインターの内容は関数に移動し、操作後に元のポインターが空になります。 :next(std :: move(n)){}

は、一意のポインターの所有権にアクセスし、潜在的に請求することを可能にします。ただし、この動作は保証されておらず、ポインターの処理を決定するために関数の実装の検査が必要です。ポインターにアクセスできますが、保存または変更できません。 :next(std :: move(n)){}

非const l値の参照を通過することに匹敵しますが、非同時引数を通過するときにstd ::移動を使用する必要があります。所有権は、関数によって請求される場合と請求される場合があり、それを予測可能にしない場合があります。関数はポインターへの一時的なアクセスが必要です。一意のポインターのコピーは許可されていません:
Base(std::unique_ptr n)
  : next(std::move(n)) {}
std :: siquire_ptr newptr(std :: move(oldptr));

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3