名稱空間
變體
操作

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

來自 cppreference.com
 
 
記憶體管理庫
(僅作說明*)
未初始化記憶體演算法
(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 起)

解引用所儲存的指標。若所儲存的指標為空,則行為未定義。

目錄

[編輯] 引數

(無)

[編輯] 返回值

1) 解引用所儲存指標的結果,即 *get()
2) 所儲存的指標,即 get()

[編輯] 註解

T陣列型別或(可能被 cv 限定的)(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

[編輯] 參閱

返回儲存的指標
(公開成員函式) [編輯]