smart pointer used by the ITK library可以隐式转换为 bool
,例如在 if
子句中。这非常方便,但我想确定它是如何工作的。我的猜测是 C++ 使用提供的 operator==
与 0 进行比较,但我找不到任何描述此行为的文档。这真的是怎么回事吗?
Here是类的 Doxygen 页面,对于那些可能觉得它比代码本身更方便的人。
最佳答案
这个转换运算符
operator ObjectType *() const
{ return m_Pointer; }
允许隐式转换为指针类型,指针类型又可以转换为 bool
。
虽然它有效,但通常被认为是一个坏主意:如果你不小心,你可能会意外地存储一个非智能指针,当智能指针销毁它的对象时,它可能会失效。出于这个原因,标准智能指针有一个 explicit operator bool()
允许在 boolean 上下文中使用,还有一个显式的 get()
函数,当你真的想要一个非智能指针。
关于c++ - itk::SmartPointer 是如何转换为 bool 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137697/