std::shared_ptr<T>::operator*, std::shared_ptr<T>::operator->
Von cppreference.com
< cpp | memory | shared ptr
| 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 |
(seit C++17) |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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) |