gpt4 book ai didi

c++ - 为什么 iostream 对象不重载 operator bool?

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:41 26 4
gpt4 key购买 nike

this answer我谈到了使用 std::ifstream 对象到 bool 的转换来测试流是否仍处于良好状态。我查看了 Josuttis 的书以获取更多信息(如果您感兴趣,请参阅第 600 页),事实证明 iostream 对象实际上重载了 operator void*。当流是错误的(可以隐式转换为 false)时它返回一个空指针,否则返回一个非空指针(隐式转换为 true)。他们为什么不直接重载 operator bool

最佳答案

看起来 C++0x 标准部分 27.4.4.3 有答案(强调我的)。

operator unspecified-bool-type() const;

Returns: If fail() then a value that will evaluate false in a boolean context; otherwise a value that will evaluate true in a boolean context. The value type returned shall not be convertible to int.

Note: This conversion can be used in contexts where a bool is expected (e.g., an if condition); however, implicit conversions (e.g., to int) that can occur with bool are not allowed, eliminating some sources of user error.

关于c++ - 为什么 iostream 对象不重载 operator bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25553801/

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