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:太棒了。感谢您的链接。 –