哆啦比猫的技术瞎扯 - Arch Linux · ドラえもん · 实时绘制

C++ 全局单例封装 C 语言库

C 语言的很多库都需要在程序开头初始化,程序结束时释放资源。在 C++ 中常规的封装方法是:

module.hh
 1 namespace module
 2 {
 3     // life time management
 4     void init();
 5     void free();
 6 
 7     // operations
 8     void foo();
 9     void bar(int baz);
10 }

这样的 API可以和 C 语言中的对应起来,但是这种 API 极易出错,比如,有可能会在 init 前调用了 foo,也可能在 free 后调用了 bar,可能 init 了多次,也可能忘了 free 等等。本文将讨论这种类型的 API 在 C++ 中该怎样设计才能更安全、更 fool-proof。

继续阅读




© 2010-2019 Giumo Xavier Clanjor (哆啦比猫/兰威举).
© 2013, 2014, 2015-2016 and 2017 The Dark Colorscheme Designed by Giumo Xavier Clanjor (哆啦比猫/兰威举).
知识共享署名·非商业性使用·相同方式共享 3.0 中国大陆许可协议
| © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee