gpt4 book ai didi

c++ - itk::SmartPointer 是如何转换为 bool 的?

转载 作者:行者123 更新时间:2023-11-28 06:40:04 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com