gpt4 book ai didi

c++ - 为什么 C++ 11 将 operator bool 添加到 ios 类

转载 作者:太空狗 更新时间:2023-10-29 19:56:17 27 4
gpt4 key购买 nike

在C++ 98中,ios类中有一个公共(public)函数定义为

operator void*() const;

在C++11中为类添加了一个operator bool,即

explicit operator bool() const;

来自阅读reference ,我不清楚为什么 operator bool 是必需的。

谁能举例说明 operator void* 导致问题,而 operator bool 工作正常?

最佳答案

在 C++98 中没有explicit cast operators 所以如果你有一个operator bool 这意味着这个对象可以用作一个bool 或任何可以从 bool 转换而来的东西(例如 int),这意味着您可能会意外地以您不希望或不希望的方式使用您的对象(例如obj + 2)。一些对象提供了对 void* 的转换,这意味着该对象可以在 if 语句(非空)中进行测试,但不能传递给期望 int 的函数

随着 explicit 转换运算符的引入,这不再需要,为了拥有一个可测试对象,最好使用 explicit operator booloperator void*

关于c++ - 为什么 C++ 11 将 operator bool 添加到 ios 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755017/

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