- memory[meta header]
- std[meta namespace]
- shared_ptr[meta class]
- function[meta id-type]
- cpp11[meta cpp]
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;
}- get()[color ff0000]
3
- C++11
- GCC: 4.3.6 [mark verified]
- Clang: 3.0 [mark verified]
- ICC: ?
- Visual C++: 2008 (TR1) [mark verified], 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]
- 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で、「空の場合はヌルポインタを返す」という記述が削除された。エイリアスコンストラクタにより、空でありながら非ヌルのポインタを保持する