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) (seit C++11)
T * operator - > ( ) const noexcept ;
(2) (seit C++11)

Dereferenziert den gespeicherten Zeiger. Das Verhalten ist undefiniert, wenn der gespeicherte Zeiger null ist.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

1) Das Ergebnis der Dereferenzierung des gespeicherten Zeigers, d.h., * get ( ) .
2) Der gespeicherte Zeiger, d.h., get ( ) .

Anmerkungen

Wenn T ein Array-Typ oder (möglicherweise cv-qualifiziert) (since C++17) void ist, ist es nicht spezifiziert, ob Funktion (1) deklariert wird. Falls sie deklariert wird, ist nicht spezifiziert, was ihr Rückgabetyp ist, außer dass die Deklaration (wenn auch nicht notwendigerweise die Definition) der Funktion wohlgeformt sein muss. Dies ermöglicht die Instanziierung von std:: shared_ptr < void >

Wenn T ein Array-Typ ist, ist nicht spezifiziert, ob Funktion (2) deklariert wird. Falls sie deklariert wird, ist nicht spezifiziert, welchen Rückgabetyp sie hat, außer dass die Deklaration der Funktion wohlgeformt sein muss.

(since C++17)

Beispiel

#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();
}

Ausgabe:

a = 10
a = 10

Siehe auch

gibt den gespeicherten Zeiger zurück
(öffentliche Elementfunktion)