在發佈std::shared_ptr<T>
之後,當我做ptr.get()
時,返回值是NULL
或nullptr
?爲了比較,我用這個:shared_ptr <T> :: get()在發佈後的返回值是什麼?
std::shared_ptr<int> ptr(new int(44));
ptr.reset();
int *p = ptr.get();
if (p == nullptr)
{
cout << "nullptr";
}
if (p == NULL)
{
cout << "NULL";
}
兩者似乎都是結果。
如果沒有'if(nullptr == NULL){cout <<「它們是相同的! << endl; }'line :) :) :) – dasblinkenlight
你可能不知道的另一件事是'shared_ptr'對'bool'有一個隱式轉換,它基本上等於'p!= nullptr'。因此,您可以編寫'p == nullptr' *或*'!p' - 無論哪一個更直觀。 –
'ptr.get()'的值是空'int *'值(而不是空'nullptr_t'值或'0'整數值),因此以下代碼將更接近'typedef int * intp; if(p == intp {}){std :: cout <<「intp {}」; }'。也就是說,以上所有內容都可以隱式轉換/相互比較,所以它並不重要。 – Mankarse