私のよく知っているC++スマートポインタauto_ptr vs shared_ptr(二)


auto_に鑑みてptrではコピーできず、標準コンテナの要素に対する要求を満たすことができないため、boostライブラリには新しいスマートポインタshared_が提供されています.ptrは、参照カウントの原理により、複数のポインタ間でオブジェクトの所有権を共有する問題を解決し、自由にコピーおよび付与され、任意の場所で共有され、コードが使用されていない(参照カウントが0)場合にパッケージされた動的に割り当てられたオブジェクトを削除することができる.shared_ptrは標準容器に安全に入れ、auto_を補うこともできます.ptrは意味を移すためポインタをSTLコンテナ要素の欠陥とすることができない.
C++11でshared_ptrは、template< class T > class shared_ptr;として定義される.
std::shared_ptrは、ポインタによってオブジェクトの共有所有権を保持するスマートポインタである.いくつかのshared_ptrオブジェクトは同じオブジェクトを持つことができる.最後のオブジェクトへのshared_ptrが破棄またはリセットされると、オブジェクトは破棄されます.オブジェクトを破棄するときにdelete式を使用するかshared_を構築します.ptr時に入力されるカスタム削除器(deleter).shared_ptrは、オブジェクトを持たずに空(empty)と呼ぶこともできる.shared_ptrはCopyConstructibleとCopyAssignableの要求を満たす.
shared_ptr実装の詳細
メンバーのタイプ
定義#テイギ#
element_type T
The type of the managed object、すなわちshared_ptrが管理しているオブジェクト
含まれるメンバー関数は次のとおりです.
メンバー関数
説明
(constructor)
constructs new shared_ptr
(destructor)
これ以上shared_がなければptrsのリンクは所有するオブジェクトを解体する
operator=
割り付けshared_ptr
reset
管理対象の置換
swap
管理対象オブジェクトの交換
get
管理対象オブジェクトへのポインタを返します
operator* ;operator->
ポインタを参照しない管理オブジェクト
use_count
shared_を返しますptrオブジェクトとは、同じ管理オブジェクトの数を指します.
unique
管理対象オブジェクトの管理が現在のshared_のみであるかどうかを確認します.ptrの例
operator bool
関連する管理オブジェクトがあるかどうかを確認
owner_before
Owner-based ordering