2014-10-01 30 views

回答

1

这种转换算子

operator ObjectType *() const 
     { return m_Pointer; } 

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

虽然它的工作原理,这被普遍认为是一个坏主意:如果你不小心,你可能会意外地存储在非智能指针,容易失效时,智能指针会破坏它的对象。由于这个原因,标准的智能指针代替explicit operator bool()允许在布尔上下文中使用,并且当你真的想要一个非智能指针时,可以使用明确的get()函数。

+0

非常感谢。我确实看到了隐式转换为原始指针的危险,但至少现在我知道了。 – 2014-10-01 09:15:25