std::unique_ptr<T,Deleter>::operator<<
来自 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, |
(自 C++20 起) | |
将由 p 管理的指针的值插入输出流 os 中。
等效于 os << p.get()。
只有当 os << p.get() 是有效表达式时,此重载才参与重载解析。
内容 |
[编辑] 参数
os | - | 一个 std::basic_ostream,用于插入 p 到其中 |
p | - | 要插入到 os 中的指针 |
[编辑] 返回值
os
[编辑] 说明
如果 std::unique_ptr<Y, D>::pointer 是指向字符类型的指针(例如,当 Y
是 char([]) 或 CharT([]) 时),这可能会最终调用 operator<<
的用于以 null 结尾的字符字符串的重载(如果指针实际上并不指向这样的字符串,则会导致未定义行为),而不是 用于打印指针本身值的重载。
[编辑] 示例
运行此代码
#include <iostream> #include <memory> class Foo {}; int main() { auto p = std::make_unique<Foo>(); std::cout << p << '\n'; std::cout << p.get() << '\n'; }
可能的输出
0x6d9028 0x6d9028
[编辑] 另请参阅
返回指向已管理对象的指针 (公有成员函数) |