optional

来源:互联网 发布:淘宝盗图修改技巧 编辑:程序博客网 时间:2024/06/04 19:18
c++14中将包含一个std::optional类,它的功能和用法和boost的optional类似。optional<T>内部存储空间可能存储了T类型的值也可能没有存储T类型的值,只有当optional被T初始化之后,这个optional才是有效的,否则是无效的,它实现了未初始化的概念。
 
optional的应用场景
函数返回无效对象
  有时根据某个条件去查找对象时,如果查找不到对象时就会返回一个无效值,这不表明函数执行失败,而是表明函数正确执行了,但是结果却不是有用的值,这时就可以返回一个未初始化的optional对象出去,在外面判断这个optional对象是否有效对象是否被初始化,如果没有被初始化就表明这个值是无效的。 
boost中的optional就实现了这种未初始化的概念,boost.optional的基本用法很简单:
 
复制代码
optional<int> op;
if(op)
    cout<<*op<<endl;
 
optional<int> op1 = 1;
if(op1)
    cout<<*op1<<endl;
0 0