设计模式之单例模式
2016-07-21 22:26
239 查看
bak 类是一个单例类,只能通过静态 getInstance 接口获取bak * 指针。
将构造函数设置为私有的,可以阻止在类外进行创建对象。
![](https://images2015.cnblogs.com/blog/828660/201607/828660-20160721222234013-409622415.png)
构造函数设置为私有可以防止类外创建对象,那么析构函数能不能设置私有? 可以
析构函数设置为私有,可以防止在类外 删除对象
结果直接报错
将构造函数设置为私有的,可以阻止在类外进行创建对象。
class bak { private: bak(){} public: ~bak(){} static bak * getInstance() { if(m_pBak == NULL){ m_pBak = new bak; } return m_pBak; } public: void show() { cout<<" show "<<endl; } private: static bak * m_pBak; }; bak * bak::m_pBak = NULL; int main(int argc, const char * argv[]) { // insert code here... std::cout << "Hello, World!\n"; bak * pB = bak::getInstance(); pB->show(); system("pause"); return 0; }
![](https://images2015.cnblogs.com/blog/828660/201607/828660-20160721222234013-409622415.png)
构造函数设置为私有可以防止类外创建对象,那么析构函数能不能设置私有? 可以
析构函数设置为私有,可以防止在类外 删除对象
class bak { private: bak(){} ~bak(){} public: static bak * getInstance() { if(m_pBak == NULL){ m_pBak = new bak; } return m_pBak; } public: void show() { cout<<" show "<<endl; } private: static bak * m_pBak; }; bak * bak::m_pBak = NULL; int main(int argc, const char * argv[]) { // insert code here... std::cout << "Hello, World!\n"; bak * pB = bak::getInstance(); pB->show(); delete pB; system("pause"); return 0; }
结果直接报错
![](https://images2015.cnblogs.com/blog/828660/201607/828660-20160721222410857-665868557.png)
相关文章推荐
- SpringMvc与Struts2的对比
- 2016 Multi-University Training Contest 2 1009 It's All In The Mind
- Tomcat 启动闪退 找不到类 java/lang/Object
- GUI:图形用户界面 界面设计
- neural-networks-and-deep-learning valley2.py
- HDU 5728 PowMod
- CCNA系列八之STP协议
- 【分治】折半查找法
- 创业17
- 面向对象的三大基石(封装,继承和复合,多态)
- 行为的封装
- Spring 通知
- 如何获取chrome视频缓存位置
- error: call to '__open_missing_mode' declared with attribute error:
- CrossDomain.xml的作用及其简单用法
- httpd 2.2 2.4配置
- neural-networks-and-deep-learning valley.py
- PF_INET 和 AF_INET 的区别
- iOS获取汉字的拼音
- Spring 之 AOP