C++ 单例模式
来源:互联网 发布:训练kitti数据集 编辑:程序博客网 时间:2024/06/06 00:37
C++的单例模式演示小程序。
单例模式通过构造函数私有化,使得系统中一个类有且仅有一个实例且该实例易于被外界访问,是一种常用的软件设计模式。
主要注意点是: 使用C++实现单例时,类的静态示例必须在类内(.h)声明,在类体外(.cpp)定义。(第一次用C++实现单例时,就因为这一点,困惑了好长时间*_*,小记一下)
static MessageMgr *instance ; //在类体内声明,静态实例
MessageMgr *MessageMgr::instance = NULL; //必须在类体外定义
使用Qt开发,与QT有关的主要是输出部分(为演示方便,用到了qDebug函数)。
代码如下。
1 .MessageMgr.h
#ifndef MESSAGEMGR_H#define MESSAGEMGR_H#include <QtCore>class MessageMgr{public : static MessageMgr *getInstance(); //单例模式,获取实例 ~MessageMgr(); void sendMessage(const QString &data); //发送消息private: MessageMgr(); //构造函数私有化 static MessageMgr *instance ; //在类体内声明,静态实例};#endif // MESSAGEMGR_H
2.MessageMgr.cpp
#include <QDebug>#include "MessageMgr.h"MessageMgr *MessageMgr::instance = NULL; //必须在类体外定义MessageMgr::MessageMgr(){ qDebug() << "Entry MessageMgr(). " ;}MessageMgr::~MessageMgr(){}MessageMgr *MessageMgr::getInstance(){ if (instance == NULL) { instance = new MessageMgr; } return instance;}void MessageMgr::sendMessage(const QString &data){ qDebug() << "Entry sendMessage()."; qDebug() << data;}
3.main.cpp
#include <QtGui/QApplication>#include "MessageMgr.h"int main(int argc, char *argv[]){ QApplication a(argc, argv); MessageMgr *instance = MessageMgr::getInstance(); instance->sendMessage("Hello Single Instance..."); return a.exec();}
输出结果如下:
嘿嘿,没有退出程序,手动点击停止调试吧。
lankin,凌云
- C#单例模式
- C#-单例模式
- 单例模式(C++)
- 【C++】单例模式
- [C++]单例模式
- 单例模式(C++)
- C ++的单例模式
- 【C++】Chapter17:单例模式
- Object-c单例模式
- Objectove-c单例模式
- Objective C--单例模式
- Objective C--单例模式
- Objective C 单例模式
- Objective C--单例模式
- 单例模式(C#)
- 单例模式(C#)
- object-c 单例模式
- c++-单例模式Singleton
- 基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结(一)
- ISTQB AL高级认证系列01:ISTQB AL-TM测试经理学习目标
- NY--96 -- n-1位数 [水]
- MFC 读ini文件
- VB.net学习笔记(十六)CLR
- C++ 单例模式
- StAX-基于流的拉式XML解析
- verbalexpressions使用方法
- eclipse快捷键大全
- 在VS2012下的CUDA程序中出现错误error : identifier “atomicAdd” is undefined
- 数据结构56页E4作业
- Oracle 权限设置
- HDU 4361 Dead or alive
- OCX控件的注册卸载,以及判断是否注册