if (!x) 和 if (x == nullptr) 之间有什么区别吗?
Are there any differences between if (!x) and if (x == nullptr)?
忽略用户定义的运算符重载,是否存在 if (!x)
与 if (x == nullptr)
行为不同的情况。或者,相反,是否存在 if(x)
与 if (x != nullptr)
.
行为不同的情况
例如标准库中是否有任何类型 !x
的行为与 x == nullptr
.
不同
注意:我知道这与 SO 上的许多其他问题非常相似,但相信它仍然值得提出自己的问题。我在这里给出了理由:Are questions about NULL sufficiently different from questions about nullptr?
此外,在元 post 上,L. F. 指出 std::optional<T*>
就是这样一种情况。但是,我很想知道是否还有其他类型,尤其是原始 and/or 指针类型。
大多数原始类型都不同。
布尔值例如:
!true
有效,而 true == nullptr
格式错误。
忽略用户定义的运算符重载,是否存在 if (!x)
与 if (x == nullptr)
行为不同的情况。或者,相反,是否存在 if(x)
与 if (x != nullptr)
.
例如标准库中是否有任何类型 !x
的行为与 x == nullptr
.
注意:我知道这与 SO 上的许多其他问题非常相似,但相信它仍然值得提出自己的问题。我在这里给出了理由:Are questions about NULL sufficiently different from questions about nullptr?
此外,在元 post 上,L. F. 指出 std::optional<T*>
就是这样一种情况。但是,我很想知道是否还有其他类型,尤其是原始 and/or 指针类型。
大多数原始类型都不同。
布尔值例如:
!true
有效,而 true == nullptr
格式错误。