单例模式保证一个类只有一个实例并提供提供一个访问他的全局访问点,该实例被所有程序模块共享。
class Signalleton{
public:
static Signalleton* get_instance(); //定义一个接口
void set_var(int var);
int get_var();
private:
Signalleton(); //将构造函数声明为私有可以防止实例化
virtual ~Signalleton();
static Signalleton *signal;
int _var;
};
Signalleton* Signalleton::signal = NULL;
Signalleton* Signalleton::get_instance()
{
if (NULL == signal)
{
signal = new Signalleton();
}
return signal;
}
Signalleton::Signalleton()
{
_var = 0;
}
Signalleton::~Signalleton()
{
delete signal;
}
int Signalleton::get_var()
{
return _var;
}
void Signalleton::set_var(int var)
{
_var = var;
}
int main()
{
Signalleton *s = Signalleton::get_instance();
s->set_var(1);
return 0;
}