T*
get() const noexcept; // (1) C++11
element_type*
get() const noexcept; // (1) C++17
constexpr element_type*
get() const noexcept; // (1) C++26
概要
リソースを取得する。
戻り値
保持しているポインタを返す。
空のshared_ptrが保持しているポインタは必ずしもヌルポインタではない。エイリアスコンストラクタを使うと、所有権を持たずに非ヌルのポインタを保持するshared_ptrを構築できるためである。
備考
リソースの所有権は*thisが持っているので、この関数によって返されたポインタに対して、リソース解放をしてはならない。
例
#include <iostream>
#include <memory>
int main()
{
std::shared_ptr<int> p(new int(3));
// リソースを取得
int* raw_pointer = p.get();
std::cout << *raw_pointer << std::endl;
}
出力
3
バージョン
言語
- C++11
処理系
- GCC: 4.3.6 ✅
- Clang: 3.0 ✅
- ICC: ?
- Visual C++: 2008 (TR1) ✅, 2010 ✅, 2012 ✅, 2013 ✅
参照
- P0414R1 Merging
shared_ptrchanges from Library Fundamentals to C++17 - P3037R6
constexpr std::shared_ptrand friends - LWG Issue 711. Contradiction in empty
shared_ptr- C++11で、「空の場合はヌルポインタを返す」という記述が削除された。エイリアスコンストラクタにより、空でありながら非ヌルのポインタを保持する
shared_ptrを構築できるため、この記述は矛盾していた
- C++11で、「空の場合はヌルポインタを返す」という記述が削除された。エイリアスコンストラクタにより、空でありながら非ヌルのポインタを保持する