实现思路
1.单例类拥有一个私有构造函数,确保用户无法通过new实例出对象;
2.包含一个静态私有成员变量This和静态共有方法Instance();
Singleton.h代码
#include <iostream>
class Singleton
{
public:
static Singleton* getInstance();
void test();
private:
static Singleton* This;
private:
Singleton();
~Singleton();
};
Singleton.cpp代码
#include "Singleton.h"
//Singleton类静态变量This指针初始化,这里可以不用NULL,改为new Singleton,则在项目启动的时候就完成新对象的构建
Singleton* Singleton::This = NULL;
Singleton* Singleton::getInstance()
{
if (!This)
{
//在类内部,可以使用new构建新对象
This = new Singleton();
}
return This;
}
void Singleton::test()
{
std::cout << "void Singleton::test()" << std::endl;
}
Singleton::Singleton()
{
std::cout << "Singleton::Singleton()" << std::endl;
}
Singleton::~Singleton()
{
std::cout << "Singleton::~Singleton()" << std::endl;
}
测试代码
#include <iostream>
#include "Singleton.h"
int main()
{
Singleton::getInstance()->test();
Singleton::getInstance()->test();
Singleton::getInstance()->test();
Singleton::getInstance()->test();
Singleton::getInstance()->test();
return 0;
}
输出结果:
Singleton::Singleton()
void Singleton::test()
void Singleton::test()
void Singleton::test()
void Singleton::test()
void Singleton::test()