C++中实现Singleton的正确方法
作者:网络转载 发布时间:[ 2013/3/8 10:48:54 ] 推荐标签:
这一实现中由于类的实例是通过new操作符获得的,所以需要为类定义释放实例的函数(图中省略了),并由在合适的时机调用。为了省去这类麻烦,作者更推崇图4所示的实现方式。
main.c
00005: class singleton1_t
00006: {
00007: public:
00008: static singleton1_t *instance ()
00009: {
00010: if (0 == p_instance_) {
00011: static singleton1_t instance;
00012: p_instance_ = &instance;
00013: }
00014: return p_instance_;
00015: }
00016:
00017: void count_increase () {count_ ++;}
00018: int count () const {return count_;}
00019:
00020: private:
00021: singleton1_t (): count_ (0) {}
00022: ~singleton1_t () {}
00023:
00024: static singleton1_t *p_instance_;
00025: int count_;
00026: };
通过在函数内部定义静态变量的方法获得类实例,一方面简化了类接口的实现,另一方面又降低了因为忘记调用释放接口函数而导致内存泄漏的可能。需要提醒的是,在这种实现方法中,类实例的构造是发生在各类的instance()函数第一次被调用时,而各实例的析构又是以与构造相反的顺序进行的,且后者是由编程语言环境所保证的。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11