首页  >  文章  >  后端开发  >  在 C 中,何时显式“operator bool”无需强制转换即可工作?

在 C 中,何时显式“operator bool”无需强制转换即可工作?

Barbara Streisand
Barbara Streisand原创
2024-10-26 23:46:31328浏览

 When Does an Explicit `operator bool` Work Without Casting in C  ?

无需强制转换的显式运算符 bool

在设计一个显式转换为 bool 的类时,人们可能想知道在没有显式强制转换的情况下它可以在哪里用作布尔值.

上下文转换为 bool

C 标准定义了值可以“根据上下文转换为 bool”的特定场景。这些情况分为四大类:

1。语句:

  • if (t) /* 语句 */;
  • for (; t;) /* 语句 */;
  • while ( t) /* 语句 */;
  • do { /* 块 */ } while (t);

2.表达式:

  • !t
  • t && t2
  • t || t2
  • t ? “真”:“假”

3.编译时测试:

  • static_assert(t);
  • noexcept(t)
  • explicit(t)
  • if constexpr (t)

4。算法和概念:

  • NullablePointer T
  • std::remove_if(...)
  • std::sort(...)

常量和非常量运算符的注意事项

值得注意的是,常量和非常量转换运算符的组合可能会导致混乱。请参阅以下相关问题了解更多信息:

  • [上下文转换中为什么没有发生显式 bool() 转换?](https://stackoverflow.com/questions/5580156/why- doest-explicit-bool-conversion-happen-in-contextual-conversion)
  • [为什么显式运算符 bool 没有按预期生效?](https://stackoverflow.com/questions/26578447/why -显式运算符布尔未按预期生效)

以上是在 C 中,何时显式“operator bool”无需强制转换即可工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn