如何将itk :: SmartPointer转换为bool?

时间:2014-10-01 09:00:05

标签: c++ boolean implicit-conversion itk

smart pointer used by the ITK library可以隐式转换为bool,例如在if子句中。这很方便,但我想确定它是如何工作的。我的猜测是C ++使用提供的operator==来比较0,但我找不到任何描述这种行为的文档。这真的发生了什么? Here是该课程的Doxygen页面,适用于那些可能比代码本身更方便的人。

1 个答案:

答案 0 :(得分:1)

此转换运算符

   operator ObjectType *() const
        { return m_Pointer; }

允许隐式转换为指针类型,而指针类型又可以转换为bool

虽然它有效,但这通常被认为是一个坏主意:如果你不小心你可能会意外地存储一个非智能指针,当智能指针破坏其对象时可能会失效。出于这个原因,标准的智能指针改为允许在布尔上下文中使用explicit operator bool(),而在需要非智能指针时使用显式get()函数。