一 : 用模板类实现单例模式
二:代码
#include<iostream>
#include<windows.h>
template<class T,typename X = void>//题外话:typename 和class 可以简单认为差不多 。void是默认值
class Singleton{
public:
static T * get_singleton(){
static T obj; //把单例定义成成员函数中的局部静态变量对象
return &obj;
}
private:
Singleton(){
std::cout<<"T 构造函数"<<"\n";
}
};
class Mysql{
public:
Mysql(){
std::cout<<"Mysql 构造函数"<<"\n";
}
};
void main(){
typedef Singleton<Mysql> mysql_single;//题外话 Singleton<Mysql> = mysql_single
Mysql * mysql_1= Singleton<Mysql>::get_singleton();//只有这里会调用Mysql的构造函数
Mysql * mysql_2= mysql_single::get_singleton();//
std::cout<< mysql_1<<"\n";
std::cout<< mysql_2<<"\n";
system("pause");
}