#include <iostream>
#include <cstdlib>
using namespace std;
//23种设计模式-----------单例设计模式=只能实例化一个对象
class singleton
{
private: //数据成员
int x;
static singleton *myinstance; //所有对象共享一个指针,一旦创建过一个对象,便不会再创建
private: //构造函数
singleton(){}
singleton(int x):x(x){}
singleton(const singleton &other)
{
this->x=other.x;
}
public:
int getx(){return x;}
void setx(int x){
this->x=x;
}
static singleton *getInstance(){ //只有这一种方式创建对象
if(myinstance==NULL)
myinstance=new singleton();
return myinstance;
}
static singleton *getInstance(int x){
if(myinstance==NULL)
{
myinstance=new singleton(x);
}
return myinstance;
}
static void ondelete(){
delete myinstance;
myinstance=NULL;
}
};
singleton * singleton::myinstance=NULL; //static 静态成员变量需要在外面初始化
int main()
{
singleton *s0=singleton::getInstance(4);
singleton *s1=singleton::getInstance(2);//s0 和s1返回的地址是同一个,都是第一次创建时的地址.
cout<<"------"<<s1->getx()<<endl;
s0->setx(2);
cout<<"------"<<s1->getx()<<endl;
singleton::ondelete();
return 0;
}
c++基础:单例设计模式
最新推荐文章于 2024-07-12 10:45:15 发布