为了安全表示NULL, stout实现了Option类。Option对象有两种状态:

enum State {
SOME,
NONE,
};

  其中SOME表示非空,NONE表示为空。可通过isSome和isNone判断Option对象是否为空。

  Option类符合RAII的特性,构造函数和析构函数如下:

Option(const Option<T>& that)
{
state = that.state;
if (that.t != NULL) {
t = new T(*that.t);
} else {
t = NULL;
}
}

  注意 Option类似于boost::unique_ptr, 不同Option对象之间不会共享内存。以下是Option的使用示例:

  

#include "stout/option.hpp"
#include <iostream> int main()
{
Option<int> a;
std::cout << (a.isSome() ? "isSome" : "isNone") << std::endl; Option<int> b();
std::cout << (b.isSome() ? "isSome" : "isNone") << std::endl; auto c = Option<int>::none();
std::cout << (c.isSome() ? "isSome" : "isNone") << std::endl; auto d = Option<int>::some();
std::cout << (d.isSome() ? "isSome" : "isNone") << std::endl; std::cout << ( a == c ? "a equals c" : "a not equal c") << std::endl; d = b;
std::cout << ( b == d ? "b equals d" : "b not equal d") << std::endl; std::cout << a.get() << std::endl;
std::cout << b.get() << std::endl;
return ;
}

最新文章

  1. Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)
  2. HDU1102(最小生成树Kruskal)
  3. 黑马程序员——JAVA基础之网络编程
  4. 使用pymongo需要手动关闭MongoDB Connection吗?
  5. Servlet过滤器和监听器
  6. [摘录]quarts :overview
  7. [译]Stairway to Integration Services Level 9 - Control Flow Task Errors
  8. 浙大pat1013题解
  9. Inverse属性和cascade属性以及集合的多对多关系
  10. Python之道1-环境搭建与pycharm的配置django安装及MySQL数据库配置
  11. 【转载】js常用方法和片段
  12. 最简单的基于DirectShow的示例:视频播放器
  13. .Net Cache
  14. rpm 安装、卸载软件命令 ——以nginx为例
  15. Session之Config配置
  16. Bootstrap3基础 img-responsive 响应式图片
  17. 有意思的App
  18. jquery生成二维码并实现图片下载
  19. Objective-C如何使用对象集合学习系列之一
  20. error &#39;there is already an open datareader associated with this command which must be closed first&#39;

热门文章

  1. HDU 1394Minimum Inversion Number
  2. HDFS essay 2 - Clarify Name Node / Checkpoint Node/ Backup Node
  3. 从oracle导入hive
  4. HADOOP docker(四):安装hive
  5. NProgress.js加载进度插件的简单实用方法
  6. NYOJ 35 表达式求值(逆波兰式求值)
  7. http://www.cnblogs.com/120626fj/p/7545958.html
  8. 解决python中文编码错误问题
  9. iOS- &lt;项目笔记&gt; UIApplication常见属性与方法总结
  10. 《学习OpenCV》课后习题解答4