C++单例模式

原创
2012/06/18 19:20
阅读数 728
//单例模式
//main.cc
#include "Single.h"

#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{
	Single::GetInstance();
	Single::GetInstance();
	return 0;
}

//Single.h
class Single
{
public:
	static Single &GetInstance();
private:
	Single();
	Single(const Single &);
	Single &operator = (const Single &);
};

//Single.cpp
#include "Single.h"

#include <iostream>

using namespace std;

Single &Single::GetInstance()
{
	static Single instance;
	return instance;
}

Single::Single()
{
	cout<<"Hello,this your world!" <<endl;
}

虽然 main 函数中调用了两次 Single::GetInstance();
但只有一次 “Hello,this your world!”的输出,也就是单例模式成功了!


//其它的实现方式!
#include <iostream>

using namespace std;

class Single
{
private:
	Single();
	virtual ~Single();
	static Single *instance;

public:
	static Single *GetInstance();
};

Single::Single()
{
	cout<<"Hello,this your world!" <<endl;
}

Single::~Single()
{
	delete instance;
}

Single *Single::instance = new Single();
Single *Single::GetInstance()
{
	return instance;
}

int main(int argc, char *argv[])
{
    Single *single1 = Single::GetInstance();
    Single *single2 = Single::GetInstance();

    return 0;
}


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部