名前空間
変種
操作

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

From cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
メモリ管理ライブラリ
(説明用*)
未初期化メモリのアルゴリズム
(C++17)
(C++17)
(C++17)
制約付き未初期化
メモリアルゴリズム
Cライブラリ

アロケータ
メモリリソース
ガベージコレクションのサポート
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
(C++11)(C++23まで)
未初期化ストレージ
(C++20まで*)
(C++20まで*)
明示的な生存期間管理
 
 
T& operator*() const noexcept;
(1) (C++11以降)
T* operator->() const noexcept;
(2) (C++11以降)

格納されているポインタを間接参照します。格納されているポインタがnullの場合、動作は未定義です。

目次

[編集] パラメータ

(なし)

[編集] 戻り値

1) 格納されているポインタの間接参照の結果、すなわち *get()
2) 格納されているポインタ、すなわち get()

[編集] 備考

Tが配列型または(cv修飾されている可能性のある)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

[編集] 関連項目

格納されたポインターを返す
(public メンバー関数) [編集]
English 日本語 中文(简体) 中文(繁體)