为什么 std::shared_ptr 提供运算符<<?
Why does std::shared_ptr provide operator<<?
std::shared_ptr
提供了operator<<
,它只是写出它的地址。没有operator>>
,只记录没有内容的地址。我想知道它在哪些情况下是有用的。
因为这是<<
在原始指针上做的潜在有用的事情。 它是安全的,这就是原始指针的作用,在某些情况下,shared_ptr
应该用于替换原始指针。
相比之下,>>
很少有意义。 与原始指针不同,在共享指针中存储指针值将获得该指针的所有权。
我可以some_stream >> raw_ptr
,除非我用ptr
做点什么,否则什么都不会出错;有点奇怪,但没有什么会立即中断。
对shared_ptr
做同样的事情只有在极其深奥的情况下才是安全的。 在这些情况下,必须采取一个步骤,首先填充原始指针,然后将其加载到共享指针中,这似乎不是一个过于繁琐的要求。
相关文章:
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 如何显式调用运算符<<
- 为什么COUT在朋友函数中不起作用,该功能超载了操作员&lt;&lt;这是一个iStream运算符
- C++运算符<<调用::ostream而不是std::osttream
- BOOST ::变体无法解决运算符&lt;&lt;对于STD :: Ostream
- 过载输出<<用于类的运算符,以打印其中的元组
- C++ostream:没有运算符匹配<<&应在'&'代币
- 重载运算符<<:此运算符函数的参数太多
- C++继承运算符<<
- 重载运算符<<用于模板类.即使使用好友关键字也无法获得私人会员
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类
- 为什么字符串流运算符<<擦除原始值
- 关于使用运算符<<为新手提供C++中的模板
- 我已经完成了<<运算符重载,但它'It’不起作用
- 重载运算符<<输出地址而不是数据成员
- 错误:没有匹配'运算符<<"在'std::cout
- 重载运算符<<用于ostream语法
- 当运算符<存在时,为什么要定义 LT?
- log4cxx访问异常,使用<<运算符和宏
- 重载<<运算符错误C2804:二进制'运算符<<'参数太多