Namespaces
Variants

std::unique_ptr<T,Deleter>:: 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)
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 Zeigers, der von p verwaltet wird, in den Ausgabestream os ein.

Entspricht os << p. get ( ) .

Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn os << p. get ( ) ein gültiger Ausdruck ist.

Inhaltsverzeichnis

Parameter

os - ein std::basic_ostream zum Einfügen von p
p - der Zeiger, der in os eingefügt werden soll

Rückgabewert

os

Hinweise

Wenn std:: unique_ptr < Y, D > :: pointer ein Zeiger auf einen Zeichentyp ist (z.B. wenn Y char ( [ ] ) oder CharT ( [ ] ) ist), könnte dies dazu führen, dass die Überladungen von operator<< für nullterminierte Zeichenketten aufgerufen werden (was zu undefiniertem Verhalten führt, wenn der Zeiger tatsächlich nicht auf eine solche Zeichenkette zeigt), anstatt der Überladung zur Ausgabe des Zeigerwerts selbst .

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

Siehe auch

gibt einen Zeiger auf das verwaltete Objekt zurück
(öffentliche Elementfunktion)