本文共 696 字,大约阅读时间需要 2 分钟。
#include "stdafx.h"#includeusing namespace std;class Singleton{private: Singleton(); ~Singleton(); //static Singleton *instance;//本来想这样创建,但是静态成员变量必须初始化 public: static Singleton* getInstance(){ //if (instance == NULL) //{ static Singleton *instance;//局部变量省去删除 //} return instance; }};int _tmain(int argc, _TCHAR* argv[]){ Singleton *s1 = Singleton::getInstance(); Singleton *s2 = Singleton::getInstance(); if (s1 == s2) { cout << "指向相同地址" << endl; } return 0;}
以上代码能成功实现一个单例模式。
编写时出现的错误: 1、如果定义一个静态成员变量的话就必须初始化,很多参考代码,并没有初始化。 2、在多线程的环境下却不行了,因为很可能两个线程同时运行到if (instance == NULL)这一句,导致可能会产生两个实例。PS:参考网上的转载地址:http://jinws.baihongyu.com/