Namespaces
Variants

std::shared_ptr<T>:: operator*, std::shared_ptr<T>:: operator->

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
T & operator * ( ) const noexcept ;
(1) (C++11以降)
T * operator - > ( ) const noexcept ;
(2) (C++11以降)

格納されたポインタをデリファレンスします。格納されたポインタがnullの場合の動作は未定義です。

目次

パラメータ

(なし)

戻り値

1) 格納されたポインタのデリファレンス結果、すなわち * get ( )
2) 格納されたポインタ、すなわち get ( )

備考

T 配列型または(possibly cv-qualified) (since C++17) void の場合、関数 (1) が宣言されるかどうかは未規定です。宣言される場合、その戻り値の型が何であるかは未規定ですが、関数の宣言(必ずしも定義ではない)は適格でなければなりません。これにより std:: shared_ptr < void > のインスタンス化が可能になります。

T が配列型の場合、関数 (2) が宣言されるかどうかは未規定である。宣言される場合、その戻り値型が何であるかは未規定であるが、関数の宣言は整形式でなければならない。

(C++17以降)

#include <iostream>
#include <memory>
struct Foo
{
    Foo(int in) : a(in) {}
    void print() const
    {
        std::cout << "a = " << a << '\n';
    }
    int a;
};
int main()
{
    auto ptr = std::make_shared<Foo>(10);
    ptr->print();
    (*ptr).print();
}

出力:

a = 10
a = 10

関連項目

格納されたポインタを返す
(公開メンバ関数)