20170724_C++单例模式
设计模式:单例模式
特点:保证只有一个实例,并提供一个访问它的全局访问点
线程不安全的单例模式:需要加锁机制
//设计模式:单例模式
//特点:保证只有一个实例,并提供一个访问它的全局访问点
//线程不安全的单例模式:需要加锁机制
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
class Singleton
{
private:
int i;
Singleton(int x):i(x) {} //构造函数:私有类型,外界不可访问!!!
void operator=(Singleton &); //赋值操作函数:不允许赋值!
Singleton(const Singleton &); //拷贝构造函数:不允许拷贝!
public:
static Singleton &instance() //返回一个实例的引用:类的对象
{
static Singleton s(47);
return s;
}
int getValue() //取值
{
return i;
}
void setValue(int x) //重新赋值
{
i=x;
}
};
int main(void)
{
Singleton & s = Singleton::instance(); //构造函数是私有类型,不可访问,故有使用的是:引用
cout<<s.getValue()<<endl; //47
Singleton & s2=Singleton::instance();
cout<<s2.getValue()<<endl; //47
s2.setValue(20);
cout<<s2.getValue()<<endl; //20
cout<<s.getValue()<<endl; //20
system("pause");
return 0;
}