Namensräume
Varianten
Aktionen

std::unique_ptr<T,Deleter>:operator<<

Von cppreference.com
< cpp‎ | memory‎ | unique 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
 
 
template< class CharT, class Traits, class Y, class D >

std::basic_ostream<CharT, Traits>& operator<<( std::basic_ostream<CharT, Traits>& os,

                                               const std::unique_ptr<Y, D>& p );
(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

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