在C++中,我可以编写如下内容:
shared_ptr<A> a_sp = someFunctionReturningSharedPtr();
if (a_sp) {
cout << a_sp->someData << endl;
} else {
cout << "Shared Pointer is NULL << endl;
}
Run Code Online (Sandbox Code Playgroud)
为什么if (a_sp)检查工作正常?a_sp不是布尔值,但如何检查true或false?if条件如何知道检查a_sp.get()函数的结果?或者,如果没有,是怎么NULL了的,两者均a_sp检查?是否有shared_ptr定义的函数将其转换为布尔值?
Man*_*rse 15
shared_ptr有一个operator unspecified-bool-type() const允许它在布尔上下文中使用.所述非指定bool型通常被定义为一个函数指针,或指向成员函数,以禁止偶然匹配为bool函数过载.
在C++0x习惯用法中explicit operator bool() const;,它禁止隐式转换(例如函数调用,转换int为算术等),但仍然允许shared_ptr在布尔上下文中转换为bool.
| 归档时间: |
|
| 查看次数: |
6404 次 |
| 最近记录: |