菜鸟笔记
提升您的技术认知

C++ 中关于optional 使用过程中遇到的问题

头文件:
#include <boost/optional.hpp>

using namespace boost;

optional很像一个仅能存放一个元素的容器,它实现了”未初始化”的概念:如果元素未初始化,那么容器就是空的,否则,容器内就是有效的,已经初始化的值。

无参的optional()或者optional(boost::none)构造一个未初始化optional对象,参数boost::none是一个类似空指针的none_t类型常量,表示未初始化;
optional op0; //一个未初始化的optional对象
optional op1(none);//同上,使用none赋予未初始化值
assert(!op0);
assert(op0 op1);

最重要的一点就是如果要用的话就一定要初始化,尤其是在比较深层次的成员变量的类是optional类型时,一定要确保它的父类中所有的optional类型的都已经被初始化了。
optional ops(“test”); //初始化为字符串test