单例模式,即保证程序在运行的过程中一个类只有一个实例。
<span style="font-size:14px;">/* 单例设计模式,只需将构造函数设为私有或者保护即可 */
#include <iostream>
using namespace std;
class SingleDemo
{
private:
/* 将构造函数设为私有或者保护,用以防止创建多个实例 */
SingleDemo(){}
SingleDemo(const SingleDemo &){}
SingleDemo & operator=(const SingleDemo &){}
public:
void show(void){cout<<"Test"<<endl;}
static SingleDemo * getInstance();
};
SingleDemo * SingleDemo::getInstance()
{
static SingleDemo single;
return &single;
}
int main()
{
SingleDemo *single = SingleDemo::getInstance();
single->show();
SingleDemo::destroyInstance();
return 0;
} </span>
在C++中,禁止在栈中创建实例,只需要将析构函数创建设为protected或者private,并且将提供一个销毁实例的静态函数(防止内存泄漏)
<span style="font-size:14px;">/*
防止在栈中创建实例,只需将析构函数设为私有或者保护即可
*/
#include <iostream>
using namespace std;
class Demo
{
public:
Demo(){}
void show(){ cout<<"test"<<endl; }
static Demo * destroyInstance(Demo *demo);
private:
~Demo(){}
};
/* 向外提供接口删除实例,防止内存泄漏 */
Demo * Demo::destroyInstance(Demo *demo)
{
if (demo!=NULL)
delete demo;
return NULL;
}
int main()
{
// Demo demo; //编译错误,不能在栈中创建实例,即只能在堆中创建
Demo *demo = new Demo;
demo->show();
// delete demo; //编译错误
demo = Demo::destroyInstance(demo);
return 0;
}</span>