std::shared_ptr
提供:cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Defined in header <memory>
|
||
| template< class T > class shared_ptr; |
(C + + 11以来) | |
std::shared_ptrポインタを通じてオブジェクトの共有所有権を保持するスマートポインタです。いくつかのshared_ptrオブジェクトが同じオブジェクトを所有するかもしれない、それを指している最後に残っているshared_ptrが破壊またはリセットされたときに、オブジェクトが破棄されます。オブジェクトがdelete-expressionまたは建設中shared_ptrに供給され、カスタムデリータを使用して破壊された.Original:
std::shared_ptr is a smart pointer that retains shared ownership of an object through a pointer. Several shared_ptr objects may own the same object; the object is destroyed when the last remaining shared_ptr pointing to it is destroyed or reset. The object is destroyed using delete-expression or a custom deleter that is supplied to shared_ptr during construction.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
shared_ptrも何のオブジェクトを所有してないかもしれませんが、その場合、それが呼び出される空.Original:
A
shared_ptr may also own no objects, in which case it is called empty.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
shared_ptrCopyConstructibleの要件を満たしており、CopyAssignable.Original:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[編集] メンバータイプ
| メンバー·タイプ
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
| element_type | T |
[編集] メンバ関数
constructs new shared_ptr (パブリックメンバ関数) | |
| それにはもっと shared_ptrsリンクする場合所有オブジェクトを破棄します Original: destructs the owned object if no more shared_ptrs link to it The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
shared_ptrを割り当てます Original: assigns the shared_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
Original: Modifiers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| 管理対象オブジェクトを置き換えます Original: replaces the managed object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| スワップの管理対象オブジェクト Original: swaps the managed objects The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
Original: Observers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| 管理対象オブジェクトへのポインタを返します Original: returns a pointer to the managed object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| 管理対象オブジェクトへの間接参照はポインタ Original: dereferences pointer to the managed object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| 同じ管理対象オブジェクトを参照 shared_ptrオブジェクトの数を返します Original: returns the number of shared_ptr objects referring to the same managed object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| 管理対象オブジェクトが、現在の shared_ptrインスタンスによって管理されているかどうかをチェックします Original: checks whether the managed object is managed only by the current shared_ptr instance The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| 管理対象オブジェクトが関連付けられているかどうかをチェックします Original: checks if there is associated managed object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
| 提供者ベースの共有ポインタの順序 Original: provides owner-based ordering of shared pointers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (パブリックメンバ関数) | |
[編集] 非メンバ関数
| 新しいオブジェクトを管理し共有ポインタを作成します Original: creates a shared pointer that manages a new object The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
| アロケータを使用して割り当てられた新しいオブジェクトを管理し共有ポインタを作成します Original: creates a shared pointer that manages a new object allocated using an allocator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
| 適用static_cast、dynamic_castconst_castまたは管理対象オブジェクトのタイプに Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
| 所有している場合、指定された型のデリータを返します Original: returns the deleter of specified type, if owned The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
| 別 shared_ptr、またはnullptrと比較します Original: compares with another shared_ptr or with nullptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
| 出力ストリームへのマネージポインタの値を出力します Original: outputs the value of the managed pointer to an output stream The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
| (C++11) |
std::swapアルゴリズムを専門としています Original: specializes the std::swap algorithm The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) |
| アトミック操作を専門としています Original: specializes atomic operations The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (関数テンプレート) | |
[編集] ヘルパークラス
| (C++11) |
std::shared_ptrハッシュをサポート Original: hash support for std::shared_ptr The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (クラステンプレートの特殊化の2つの値を比較します) |
[編集] 実装上の注意
典型的な実装では、std::shared_ptrは2つだけのポインタを保持します
Original:
In a typical implementation, std::shared_ptr holds only two pointers:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 参照されたオブジェクトへのポインタOriginal:a pointer to the referenced objectThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 制御ブロックへのポインタOriginal:a pointer to control blockThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
:制御ブロックは、保持している動的に割り当てられたオブジェクトです
Original:
Where the control block is a dynamically-allocated object that holds:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 管理対象オブジェクト、または管理対象オブジェクト自身へのポインタOriginal:a pointer to the managed object or the managed object itselfThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - デリータOriginal:the deleterThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - アロケータOriginal:the allocatorThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 管理対象オブジェクトを所有
shared_ptrs数Original:the number ofshared_ptrs that own the managed objectThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 管理対象オブジェクトを参照してください
weak_ptrs数Original:the number ofweak_ptrs that refer to the managed objectThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
shared_ptrを呼び出すことによって作成されたときにstd::make_sharedまたはstd::allocate_shared、制御ブロックは、データメンバとして、直接管理対象オブジェクトを保持しています。 shared_ptrはコンストラクタを呼び出すことによって作成されたときに、ポインタが格納されている.Original:
When
shared_ptr is created by calling std::make_shared or std::allocate_shared, the control block holds the managed object directly, as a data member. When shared_ptr is created by calling a constructor, a pointer is stored.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
shared_ptrが保有するポインタが直接制御ブロックが保持しているポインタ/オブジェクトは、共有所有者の数がゼロになった時点で削除されるものである一方、get()で返されるものです:これらのポインターが必ずしも同じではありません.Original:
The pointer held by the
shared_ptr directly is the one returned by get(), while the pointer/object held by the control block is the one that will be deleted when the number of shared owners reaches zero: these pointers are not necessarily equal.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
shared_ptrをデクリメントのデストラクタ制御ブロックの共有所有者の数、それがゼロに達すると、制御ブロックは、管理対象オブジェクトのデストラクタを呼び出しますが、std::weak_ptrカウンターだけでなくゼロに達するまで制御ブロックは、自分自身を解放していません.Original:
The destructor of
shared_ptr decrements the number of shared owners of the control block, and if that reaches zero, the control block calls the destructor of the managed object, but the control block does not deallocate itself until the std::weak_ptr counter reaches zero as well.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.