ホームページ >バックエンド開発 >C++ >どのような C スマート ポインター実装が存在し、それらはどのように異なるのでしょうか?

どのような C スマート ポインター実装が存在し、それらはどのように異なるのでしょうか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-30 10:46:12620ブラウズ

What C   Smart Pointer Implementations Exist and How Do They Differ?

どのような C スマート ポインター実装が利用可能ですか?

C 03

  • std::auto_ptr: ガベージ コレクションが制限されており、配列に割り当てられたオブジェクトを保持できません。コピーはサポートされていません。
  • std::auto_ptr_ref: スマート ポインターではありません。コピーと代入のために std::auto_ptr とともに使用されます。

C 11

  • std::unique_ptr: std::auto_ptr を置き換え、パフォーマンスを向上させ、配列で動作します。 STL コンテナで使用できます。
  • std::shared_ptr: 参照カウント付きスマート ポインタ。複数の所有者によって共有可能、スレッドセーフ。
  • std::weak_ptr: std::shared_ptr が所有するオブジェクトへの参照は妨げられません

Boost

  • boost::shared_ptr: 標準準拠のshared-ptr、使いやすい、一部では高いオーバーヘッドcase.
  • boost::weak_ptr: 標準準拠のweak_ptr、非所有参照による boost::shared_ptr.
  • boost::scoped_ptr: std::unique_ptr に似ていますが、よりオーバーヘッドが少ないですboost::shared_ptr、STL コンテナでは使用できません。
  • boost::intrusive_ptr: 独自のスマート ポインター互換クラスを作成するためのカスタマイズ可能なスマート ポインター。
  • boost::shared_array: 配列の Shared_ptr、動的配列割り当てをサポートし、削除。
  • boost::scoped_array: 配列の Scoped_ptr はコピー不可で、STL では使用できませんコンテナー。

Qt

  • QPointer: QObject および派生クラスの弱いスマート ポインター。強いpointer.
  • QSharedDataPointer: 強力なスマート ポインター。手動による参照カウントが必要で、QSharedData をサブクラス化できます。
  • QExplicitlySharedDataPointer: QSharedDataPointer と同様、より詳細な制御を提供します以上デタッチ中。
  • QSharedPointer: アトミック参照カウント、スレッドセーフ、カスタマイズ可能な削除、高オーバーヘッド。
  • QWeakPointer: 弱いスマート ポインタ。循環を防ぐための QSharedPointer References.
  • QScopedPointer: 単一所有者のスマート ポインター。QSharedPointer よりもオーバーヘッドが少ないです。

以上がどのような C スマート ポインター実装が存在し、それらはどのように異なるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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