Singleton
2015-09-16 16:22
246 查看
#include <iostream> class Person { private: static Person *singlePerson; Person() { std::cout<<"Create Person"<<std::endl; } ~Person() { std::cout<<"Delete Person"<<std::endl; } class CGarInner{//用户无法直接delete这个单例,但是在程序的最后还是会释放 public: CGarInner(){ std::cout<<"Create CGarInner"<<std::endl; } ~CGarInner(){ if(Person::singlePerson) { delete Person::singlePerson; Person::singlePerson = NULL; } } }; static CGarInner CGarInst; public: static Person *defaultInst(){ if(Person::singlePerson==NULL)//双层判断,由于lock的开销略大 { //lock if(Person::singlePerson==NULL) { Person::singlePerson = new Person(); } //unlock } return Person::singlePerson; } }; Person *Person::singlePerson = NULL; Person::CGarInner Person::CGarInst; int main(int argc, const char * argv[]) { __unused Person *per1 = Person::defaultInst(); __unused Person *per2 = Person::defaultInst(); return 0; }
相关文章推荐
- iOS开发之旅--NSRunLoop 详解
- 哈希查找
- 悬浮tableviewHeaderView方法
- PowerDesigner中name和code取消自动关联(转)
- 你设计的测试用例颗粒度多大合适?(三)
- Java 多线程应用小结(一)
- C# 自动升级更新winform程序
- 浅谈jsp九大内置对象
- ubuntu keyword
- Hibernate – One-to-One example (Annotation)
- AVL树的旋转操作
- onActivityResult(),startActivityForResult()的使用
- C++ stringstream介绍,使用方法与例子
- Codefrces 388C Fox and Card Game
- Android Design AppBarLayout、NavigationView、FloatingActionButton、CollapsingToolbarLayout等控件的使用
- 判断一个类是否实现了某个接口
- CCSprite(2)(cocos2dx-2.2.5)
- python知识点总结
- 你设计的测试用例颗粒度多大合适?(一)
- 你设计的测试用例颗粒度多大合适?(二)