shared_ptr的工作,在C++中,我可以寫這樣的:如何,如果條件
shared_ptr<A> a_sp = someFunctionReturningSharedPtr();
if (a_sp) {
cout << a_sp->someData << endl;
} else {
cout << "Shared Pointer is NULL << endl;
}
爲什麼if (a_sp)
檢查工作是否正確? a_sp
不是布爾值,但它是如何檢查真或假? if條件知道如何檢查a_sp.get()
函數的結果?或者如果沒有,檢查a_sp
的NULL
如何?定義將shared_ptr
中的某個函數轉換爲布爾值嗎?
Mankarse:這個語法是什麼'operator unspecified-bool-類型()'。我以前沒見過這個。這是什麼特別的提升? –
unspecified-bool-type僅代表實際類型,如bool。這個語法不是一個特別的提升,它是聲明「類型轉換運算符」的語法。查看[wikibooks](http://en.wikibooks.org/wiki/C++_Programming/Operators/Operator_Overloading#Conversion_operators) – Mankarse
Mankarse:太棒了。感謝您的鏈接。 –