static与单例模式
保证一个类只有一个实例,并提供一个全局访问点
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton* GetInstance()
{
if (instacne_ == NULL)
{
instacne_ = new Singleton;
}
return instacne_;
}
~Singleton()
{
cout<<"~Singleton ..."<<endl;
}
private:
Singleton(const Singleton& other);
Singleton& operator=(const Singleton& other);
Singleton()
{
cout<<"Singleton ..."<<endl;
}
static Singleton* instacne_;
};
Singleton* Singleton::instacne_;
int main(void)
{
//Singleton s1;
//Singleton s2;
Singleton* s1 = Singleton::GetInstance();
Singleton* s2 = Singleton::GetInstance();
//Singleton s3(*s1); // 调用拷贝构造函数
return 0;
}
只构造了一个对象,调用了一次构造函数,单例模式
单例模式不会调用析构函数。
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton& GetInstance()//引用
{
static Singleton instance; // 局部静态对象
return instance;
}
~Singleton()
{
cout<<"~Singleton ..."<<endl;
}
private:
Singleton(const Singleton& other);
Singleton& operator=(const Singleton& other);
Singleton()
{
cout<<"Singleton ..."<<endl;
}
};
int main(void)
{
Singleton& s1 = Singleton::GetInstance();//引用
Singleton& s2 = Singleton::GetInstance();
return 0;
}
使用引用,调用析构函数。