smart pointer used by the ITK library可以隐式转换为bool
,例如在if
子句中。这很方便,但我想确定它是如何工作的。我的猜测是C ++使用提供的operator==
来比较0,但我找不到任何描述这种行为的文档。这真的发生了什么?
Here是该课程的Doxygen页面,适用于那些可能比代码本身更方便的人。
答案 0 :(得分:1)
此转换运算符
operator ObjectType *() const
{ return m_Pointer; }
允许隐式转换为指针类型,而指针类型又可以转换为bool
。
虽然它有效,但这通常被认为是一个坏主意:如果你不小心你可能会意外地存储一个非智能指针,当智能指针破坏其对象时可能会失效。出于这个原因,标准的智能指针改为允许在布尔上下文中使用explicit operator bool()
,而在需要非智能指针时使用显式get()
函数。