std::unique_ptr<T,Deleter>:operator<<
Von cppreference.com
< cpp | memory | unique ptr
| template< class CharT, class Traits, class Y, class D > std::basic_ostream<CharT, Traits>& operator<<( std::basic_ostream<CharT, Traits>& os, |
(seit C++20) | |
Fügt den Wert des von p verwalteten Zeigers in den Ausgabestrom os ein.
Entspricht os << p.get().
Diese Überladung nimmt nur an der Auflösung der Überladung teil, wenn os << p.get() ein gültiger Ausdruck ist.
Inhalt |
[bearbeiten] Parameter
| os | - | Ein std::basic_ostream, in den p eingefügt werden soll |
| p | - | Der in os einzufügende Zeiger |
[bearbeiten] Rückgabewert
os
[bearbeiten] Hinweise
Wenn std::unique_ptr<Y, D>::pointer ein Zeiger auf einen Zeigertyp (z. B. wenn Y char([]) oder CharT([]) ist), kann dies dazu führen, dass die Überladungen von operator<< für nullterminierte Zeichenketten aufgerufen werden (was zu undefiniertem Verhalten führt, wenn der Zeiger nicht tatsächlich auf eine solche Zeichenkette zeigt), anstatt der Überladung zum Drucken des Zeigerwerts selbst.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <memory> class Foo {}; int main() { auto p = std::make_unique<Foo>(); std::cout << p << '\n'; std::cout << p.get() << '\n'; }
Mögliche Ausgabe
0x6d9028 0x6d9028
[bearbeiten] Siehe auch
| Gibt einen Zeiger auf das verwaltete Objekt zurück (öffentliche Memberfunktion) |