std::unique_ptr<T,Deleter>::operator<<
< 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 | - | 要插入 p 到的 std::basic_ostream
|
p | - | 要插入到 os 的指针
|
返回值
os
注意
若 std::unique_ptr<Y, D>::pointer 为指向字符类型的指针(例如当 Y
为 char 或 char[] 或 CharT 时),这可能最终调用 operator<<
对空终止字符串的重载(若该指针实际上不指向这种字符串,则导致未定义行为),而非打印指针值自身的重载。
示例
运行此代码
#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
参阅
返回指向被管理对象的指针 (公开成员函数) |