Singleton.h
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
#include <stdio.h>
class Singleton
{
protected:
Singleton(){}
private:
static Singleton* p;
public:
static Singleton* getInstance();
void func1(void);
};
#endif
Singleton.cpp
#include "Singleton.h"
#include <stdio.h>
Singleton* Singleton::p = NULL;
Singleton* Singleton::getInstance()
{
if (p == NULL)
{
p = new Singleton();
}
return p;
}
void Singleton::func1()
{
printf("func1\r\n");
}
Singleton.cpp
#include "Singleton.h"
#include <stdio.h>
Singleton *Singleton::p = new Singleton; //静态成员变量,在进入main函数前就已经被初始化
Singleton::Singleton()
{
}
Singleton* Singleton::getInstance()
{
return p;
}
void Singleton::func1()
{
printf("func1\r\n");
}
main.cpp
#include "Singleton.h"
int main()
{
Singleton *t = Singleton::getInstance();
Singleton *tt = Singleton::getInstance();
printf("t = %p, tt= %p\r\n", t, tt);
}