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

来自cppreference.com
< cpp‎ | memory‎ | unique ptr
 
 
工具库
通用工具
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)

初等字符串转换
(C++17)
(C++17)
栈踪
 
动态内存管理
智能指针
(C++11)
(C++11)
(C++11)
(C++17 前)
(C++11)
(C++23)
分配器
内存资源
未初始化存储
未初始化内存算法
受约束的未初始化内存算法
垃圾收集支持
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
(C++11)(C++23 前)
杂项
(C++20)
(C++11)
(C++11)
C 库
低层内存管理
 
 
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);
(C++20 起)

插入 p 所管理的指针的值到输出流 os 中。

等价于 os << p.get()

此重载仅若 os << p.get() 为合法表达式才参与重载决议。

参数

os - 要插入 p 到的 std::basic_ostream
p - 要插入到 os 的指针

返回值

os

注意

std::unique_ptr<Y, D>::pointer 为指向字符类型的指针(例如当 Ycharchar[]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

参阅

返回指向被管理对象的指针
(公开成员函数)