#include <iostream>
using namespace std;
template <class T>
class Instance
{
public:
static T *getInstance()
{
if(m_instance == NULL)
{
m_instance = new T();
}
return m_instance;
}
static void delInstance()
{
if(m_instance)
{
delete m_instance;
m_instance = NULL;
}
}
protected:
Instance(){}
~Instance(){}
static T *m_instance;
private:
//把复制构造函数和=操作符也设为私有,防止被复制
Instance & operator =(const Instance &) = delete;
Instance(const Instance &) = delete;
};
template <class T>
T *Instance<T>::m_instance;
应用:
//不能被继承 单例模式应用
class Ins_test : public Instance<Ins_test>
{
public:
Ins_test();
void test();
void add(int a, int b);
//C++中初始化struct结构体
struct hello_
{
int a;
int b;
hello_(){
a = 10;
b = 20;
}
}Hello;
};
#include <iostream>
#include ""
using namespace std;
Ins_test::Ins_test()
{
}
void Ins_test::test()
{
cout<<"this is Instance test"<<endl;
}
void Ins_test::add(int a, int b)
{
cout<<"sum = "<<a+b<<endl;
}
#include <iostream>
#include ""
using namespace std;
int main()
{
cout << "Hello World!" << endl;
Ins_test ins;
Instance<Ins_test>::getInstance()->test();
Instance<Ins_test>::getInstance()->add(ins.Hello.a, ins.Hello.b);
system("pause");
return 0;
}