导言
- Boost.any的特性
– 能够保存任意类型的变量,这和STL有很大的不同;
– 模拟动态类型;
–类型安全:不对存入any的变量进行类型强制转换;
– 异常安全;
– 可写出动态语言的编程范式。 - 构造函数
default构造函数, copy构造函数, move构造函数和operator=构造函数. - 成员函数
clear, empty, swap, type. - any_cast用于取any中的值
① boost::any_cast<Type>(anyObj);返回的不是引用而是一个副本对象;如果类型不匹配会抛出boos::bad_any_cast异常
② boost::any_cast<Type>(&anyObj);如果类型不匹配则返回nullptr,不会抛出异常。因此,在代码过程中,我们习惯使用传引用而非传值 - bad_any_cast:一个异常类型;使用any_cast类型不匹配时会被抛出异常。如果不想抛出异常而使得程序崩溃,可用try catch捕获;不过不建议这么做!
- 注意事项
– 需要RIIT支持
– 所有的对象都是copy操作
– 不对存入数据做类型转换
– 动态分配内存
– any不是模板类
使用实例
以下是any的公有接口:
namespace boost {
class any {
public:
any();
any(const any&);
template<typename ValueType>
any(const ValueType&);
~any();
any& swap(any &);
any& operator=(const any&);
template<typename ValueType>

本文介绍了Boost库中的boost::any容器,它能保存任意类型的变量,模拟动态类型,提供异常安全的类型转换。文章详细阐述了any的构造函数、成员函数、any_cast的两种用法以及注意事项,并给出了使用实例,展示了如何在C++中使用any存储和取出不同类型的对象。
最低0.47元/天 解锁文章
958

被折叠的 条评论
为什么被折叠?



