万能类型boost::any
来源:互联网 发布:moeloade类似软件 编辑:程序博客网 时间:2024/06/04 18:28
4.6 使用第三方库
以上介绍了VisualC++对对象赋值、转换及字符编码转换的方法,实际上还有一些好用的第三方类库用以辅助C++程序员完成对象处理,比较著名的就是boost。本节简单介绍boost库中与数值相关的boost::any、boost::lexical_cast,以及有理数类boost::rational。
4.6.1 万能类型boost::any
boost库提供了any类,boost::any是一个能保存任意类型值的类,这一点有点像variant类型,不过variant由于采用了一个巨大的union,效率非常低。而boost利用模板,保存的时候并不改变值的类型,只是在需要的时候才提供方法让用户进行类型判断及取值。
boost::any几乎可以用来存储任何数据类型:
需要的时候,我们又可以使用any_cast将原来的数据还原:
当这种转换发生类型不匹配时,会有异常bad_any_cast发生:
在传统的C++程序中,为了支持各种数据类型,我们不得不使用万能指针"void *",但是很遗憾的是,基于万能指针的转换是不安全的,"void*"缺少类型检查。所以,我们建议大家尽量使用any类。
现在动手
编写如下程序,体验如何使用boost::any来完成对象类型转换。
【程序 4-10】使用boost::any完成对象类型转换
结果输出如图4-18所示。
(点击查看大图)图4-18 运行结果光盘导读
该项目对应于光盘中的目录"/ch04/BoostAnyTest"。
【责任编辑:云霞 TEL:(010)68476606】
- 万能类型boost::any
- 万能类型boost::any
- 白乔原创:万能类型boost::any
- 4.6.1 万能类型boost::any
- 模仿boost::any类型
- boost::any类型实现原理
- 让Boost.python支持Boost::any类型。
- boost.any实现任意类型存储
- boost::any
- Boost::any
- BOOST--any
- boost::any
- boost::any
- Boost::Any
- boost::any
- boost any
- boost any
- Boost.Any
- 各种水果的药理作用
- 李开复给学习计算机的学生的7点建议
- 大家一起推荐几个国外的IT论坛吧
- linux 在shell下经常发出嘟嘟的声音
- 散落;回不来
- 万能类型boost::any
- 面试归来总结
- 经典命令行
- 万能转换器boost::lexical_cast
- jQuery学习笔记——$()工厂函数找你所找
- 大四的过来看看,受益匪浅啊
- 并查集学习
- Boost::any分析
- 【词汇】win7的休眠和睡眠