【发布时间】:2013-04-15 10:55:54
【问题描述】:
我想知道运营商的回报是什么!在 c++ 中的 _bstr_t 类型(字符串)上。
示例:
if (!!mybstr)
{
doSomething()
} else {
doNothing()
}
我假设它是一个布尔返回,但它是如何工作的?
谢谢!
【问题讨论】:
-
没有运营商
!!。它实际上是 2 个连续的!运算符。
我想知道运营商的回报是什么!在 c++ 中的 _bstr_t 类型(字符串)上。
示例:
if (!!mybstr)
{
doSomething()
} else {
doNothing()
}
我假设它是一个布尔返回,但它是如何工作的?
谢谢!
【问题讨论】:
!!。它实际上是 2 个连续的 ! 运算符。
如果封装的BSTR 字符串为NULL,则_bstr_t::operator! 返回true。因此,如果封装的 BSTR 字符串不是 NULL,则 !!mybstr 将是 true。
【讨论】:
!! 不是运算符。这只是! 运算符的两个应用程序。对于普通的 bool 值,最终效果是无操作。对于隐式转换为bool 的类型,它有时用于强制转换为bool。对于重载了operator! 的类型,它可以根据operator! 的语义做任何事情。
【讨论】:
【讨论】:
if (!!mybstr) = if (!(!mybstr)) = if (mybstr)
【讨论】: