哆啦比猫的技术瞎扯 - 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。