ホームページ >バックエンド開発 >C++ >どの C スマート ポインターを選択すればよいですか?

どの C スマート ポインターを選択すればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 17:10:12203ブラウズ

Which C   Smart Pointer Should I Choose?

利用可能な C スマート ポインター実装とその比較

C 03

  • std::auto_ptr: 将来の C 標準では非推奨になります。ガベージ コレクションの制限、所有権の複雑さ、STL コンテナーでの使用不可。
  • std::auto_ptr_ref: 真のスマート ポインターではありません。 std::auto_ptr と組み合わせて使用​​すると、コピーと割り当てが可能になります。

C 11

  • std::unique_ptr: std::auto_ptr を置き換えます。 std::auto_ptr の弱点を修正し、配列の操作、左辺値保護、STL コンテナーでの使用を可能にします。
  • std::shared_ptr: 参照カウント スマート ポインター。エイリアスとポインタの算術演算をサポートします。
  • std::weak_ptr: std::shared_ptr によって所有されるオブジェクトへの非所有参照。無限の循環参照カウントを防止します。

Boost

  • boost::shared_ptr: 一般的な共有参照カウント スマート ポインター。高いパフォーマンスと多用途性。
  • boost::weak_ptr: boost::shared_ptr への非所有参照。
  • boost::scoped_ptr:少ない機能で boost::shared_ptr に代わるシンプルなスマート ポインターoverhead.
  • boost::intrusive_ptr: 独自のスマート ポインター互換クラスを作成するためのカスタム スマート ポインター。
  • boost::shared_array: 共有スマートポインターarrays.
  • boost::scoped_array: 配列のコピー不可能なスマート ポインター。

Qt

  • QPointer: 賢さが弱いQObject および派生クラスのポインター。非推奨。
  • QSharedDataPointer: スレッド セーフを備えた boost::intrusive_ptr に匹敵する強力なスマート ポインター。
  • QExplicitlySharedDataPointer: 強化された QSharedDataPointer のバージョン 2.0制御するdetachment.
  • QSharedPointer: アトミックな参照カウント、スレッドセーフ、共有可能なスマート ポインター。
  • QWeakPointer: への非所有参照QSharedPointer.
  • QScopedPointer: boost::scoped_ptr に基づく単一所有者のスマート ポインター。例外安全なコードと互換性に適しています。

以上がどの C スマート ポインターを選択すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。