为什么std :: shared_ptr提供运算符&lt; <! - ?

时间:2017-03-22 19:01:08

标签: c++ c++11 shared-ptr

std::shared_ptr提供operator<<,只写出其地址。没有operator>>,只记录没有内容的地址。我想知道它在哪些情况下是有用的。

1 个答案:

答案 0 :(得分:0)

因为<<对原始指针的作用是一个潜在有用的东西。它是安全的,它是原始指针所做的,并且在某些情况下shared_ptr应该用于替换原始指针。

在比较中,>>很少有意义。与原始指针不同,将指针值存储在共享指针中需要拥有它。

我可以some_stream >> raw_ptr,除非我对ptr做了什么,否则什么都不会出错;有点奇怪,但没有立刻打破。

shared_ptr这样做只会在极端深奥的情况下安全。在这些情况下,必须采取我们首先填充原始指针然后将其加载到共享指针的步骤并不像是一个过于繁琐的要求。