Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Speicherverwaltungsbibliothek
(nur Exposition*)
Algorithmen für uninitialisierten Speicher
(C++17)
(C++17)
(C++17)
Beschränkte uninitialisierte
Speicher-Algorithmen
C-Bibliothek

Allocatoren
Speicherressourcen
Unterstützung für Garbage Collection
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
(C++11)(bis C++23)
Uninitialisierter Speicher
Explizites Lebenszeitmanagement
 
 
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.

Inhalt

[bearbeiten] Parameter

(keine)

[bearbeiten] Rückgabewert

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

[bearbeiten] Anmerkungen

Wenn T ein Array-Typ oder (möglicherweise cv-qualifiziert) void ist, ist es nicht spezifiziert, ob Funktion (1) deklariert ist. Wenn sie deklariert ist, ist es nicht spezifiziert, was ihr Rückgabetyp ist, außer dass die Deklaration (aber nicht unbedingt die Definition) der Funktion wohlgeformt sein soll. Dies ermöglicht die Instanziierung von std::shared_ptr<void>

Wenn T ein Array-Typ ist, ist es nicht spezifiziert, ob Funktion (2) deklariert ist. Wenn sie deklariert ist, ist es nicht spezifiziert, was ihr Rückgabetyp ist, außer dass die Deklaration der Funktion wohlgeformt sein soll.

(seit C++17)

[bearbeiten] 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

[bearbeiten] Siehe auch

gibt den gespeicherten Zeiger zurück
(public member function) [edit]