的我注意到一個奇怪的事實有關的shared_ptr語義空的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,無論它是否爲空或它是否是有效的對象都沒有區別,那爲什麼要關心它? – chris 2013-04-07 20:34:41
我不認爲引用計數指針對nullptr有特殊處理。 – BlackCat 2013-04-07 20:35:47
在C++ 11中,'use_count()'必須在空'shared_ptr'(20.7.2.2.5/7)上爲'0'。 – ipc 2013-04-07 20:38:27