热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么C++11将运算符bool添加到ios类中

如何解决《为什么C++11将运算符bool添加到ios类中》经验,为你挑选了1个好方法。

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

operator void*() const;

operator bool在C++ 11中将An 添加到类中,即

explicit operator bool() const;

从阅读参考文献来看,我不清楚为什么这operator bool是必要的.

任何人都可以给出一个operator void*导致问题的例子,同时operator bool工作得很好吗?



1> Motti..:

在C++ 98中没有explicit强制转换操作符,所以如果你有一个operator bool它意味着该对象可以被用作一个bool或任何可以从中投射的东西bool(例如int)这意味着你可能会意外地以你想要的方式使用你的对象不期望或想要(例如obj + 2).一些对象提供了一个强制转换void*,意味着该对象可以在一个if语句中测试(不是null)但是不能传递给期望的函数int等.

随着explicit铸造操作员的引入,不再需要这样做,并且为了拥有可测试的物体,使用它explicit operator bool比使用更好operator void*.


推荐阅读
author-avatar
xhl583337984
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有