0

我想知道运营商的回报是什么!在 C++ 中的_bstr_t类型(字符串)上。

例子:

if (!!mybstr)
{
doSomething()
} else {
doNothing()
}

我认为这是一个布尔返回,但它是如何工作的?

谢谢!

4

4 回答 4

12

_bstr_t::operator!true如果封装的BSTR字符串是,则返回NULL。如果封装的字符串不是,!!mybstr也会如此。trueBSTRNULL

于 2013-04-22T13:52:40.533 回答
4

!!不是运算符。这只是!运算符的两个应用程序。对于普通bool值,净效果是无操作。对于隐式转换为 的类型bool,它有时用于强制转换为bool. 对于operator!重载的类型,它可以根据operator!.

于 2013-04-22T13:53:46.137 回答
1

如果您查看MSDN 文档

检查封装的 BSTR 是否为 NULL 字符串。

所以如果你做两次,那么你首先检查它是否不为空,然后如果不是,那么你if (bstr)实际上是在检查。

于 2013-04-22T13:54:20.437 回答
1
if (!!mybstr) = if (!(!mybstr)) = if (mybstr)
于 2013-04-22T13:55:50.250 回答