【发布时间】:2013-04-07 20:33:29
【问题描述】:
我注意到一个关于 shared_ptr 的奇怪事实
int* p = nullptr;
std::shared_ptr<int> s(p); // create a count (1).
std::shared_ptr<int> s2(s); // count go to 2.
assert(s.use_count() == 2);
我想知道除此之外的语义是什么。为什么 s 和 s2 共享一个 nullptr ?这有意义吗?
或者这种不常见的情况不值得使用 if 语句(代价高昂?)?
感谢您的启发。
【问题讨论】:
-
AFAICT,它是否为 null 或是否为有效对象都没有区别,那么它为什么要关心呢?
-
我不认为引用计数指针对 nullptr 有特殊处理。
-
在 C++11 中,
use_count()在空的shared_ptr(20.7.2.2.5/7) 上必须是0。 -
感谢回复:)
标签: c++ shared-ptr reference-counting nullptr