头文件:#include <boost/optional.hpp>
using namespace boost;
optional很像一个仅能存放一个元素的容器,它实现了"未初始化"的概念:如果元素未初始化,那么容器就是空的,否则,容器内就是有效的,已经初始化的值。
- 无参的optional()或者optional(boost::none)构造一个未初始化optional对象,参数boost::none是一个类似空指针的none_t类型常量,表示未初始化;
optional<int> op0; //一个未初始化的optional对象
optional<int> op1(none);//同上,使用none赋予未初始化值
assert(!op0);
assert(op0 == op1);
- 最重要的一点就是如果要用的话就一定要初始化,尤其是在比较深层次的成员变量的类是optional类型时,一定要确保它的父类中所有的optional类型的都已经被初始化了。
optional<string> ops("test"); //初始化为字符串test