单例模式的C++版本实现

单例模式的意图:保证一个类仅有一个实例,并且提供一个访问她的全局访问点。


第一种形式:

#includeusing namespace std;

class Singleton {

static Singleton s;

int i;

Singleton(int x) :i(x) {};

//把复制构造函数和“=”操作符也设为私有,防止复制和拷贝

Singleton & operator = (Singleton&);//不允许赋值

Singleton(const Singleton&);//不允许拷贝

public:

static Singleton& instance() { return s; }

int getValue() { return i; }

void setValue(int x) { i = x; }

};

Singleton Singleton::s(47);//定义静态成员s

int main()

{

Singleton& s = Singleton::instance();

cout << s.getValue() << endl;

Singleton & s2 = Singleton::instance();

s2.setValue(9);

cout << s.getValue() << endl;

return 0;

}


请你写出一个单例模式来。

好,这个题目很简单,相信大家都能很快的写出来(写出来立即编译没有错误—当时去IBM面试时候的要求)。

请大家放心,面试官是不会就这么放过你滴。

会分别问你:怎么才能更节省资源?多线程情况下怎么样?双重检查方式的单例模式?还有其它的实现方式么?

一步步进逼,不会让你大喘气滴。

大家来试试,只要写出下面四种方式的就可以了:

A:单线程下单例模式;

B:简单修改A中代码,实现多线程下的单例模式;

C:双重检查的单例模式;

D:还有其它实现方式么?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容