1、定义:保证一个类只有一个实例,且提供一个全局访问点
注意:(1)单例模式中禁止拷贝、禁止赋值操作。
代码实现如下:
#include<iostream>
using namespace std;
class Singleton
{
public:
static Singleton* getInstance(){
if (instance==NULL)
{
instance=new Singleton();
}
return instance;
}
/*static void Free(){
if (instance!=NULL)
{
delete instance;
}
}*/
class Garbo{
public:
~Garbo(){
if (Singleton::instance!=NULL)
{
delete instance;
}
}
};
~Singleton(){
cout<<"~SingleTon..."<<endl;
}
protected:
private:
const Singleton(const Singleton& other);//拷贝构造函数
Singleton& operator=(const Singleton& other);//赋值构造函数
Singleton(){
cout<<"SingleTon..."<<endl;
}
static Singleton* instance;
static Garbo garbo;//对象声明周期结束后,将自动调用析构函数
};
Singleton* Singleton::instance;
Singleton::Garbo Singleton::garbo;
int main(){
Singleton *sing1=Singleton::getInstance();
Singleton *sing2=Singleton::getInstance();
//Singleton sing3(*sing1);调用拷贝构造函数
//sing3=sing2; //调用赋值函数
//Singleton::Free();
return 0;
}