本文主要是介绍C++_单列模式介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
介绍
- (1)…什么是单例
1.只能有一个实例化的对象的类- (2).单例有什么用
1.多线程的线程池的设计
2.系统中只需要一个窗口时才使用单例(无法重复创建)
3.一个操作系统只能有一个文件系统- (3).单例怎么用
1.隐藏所有构造函数
2.静态成员内部调用构造函数实例化
3.提供一个静态函数来返回静态成员对象
源码
#include<iostream>
#include<string>using namespace std;
//不管用不用,程序开始就会实例化一个对象(饿汉式)
#if 1class single
{
public://调用实例化static single& getinstance(){return s_instance;}
private:single(){}//构造single(int data) :m_data(data){}//初始化单参构造single(const single&){}//拷贝构造int m_data;static single s_instance;//静态成员变量引用};
single single::s_instance(100);//自动调用构造函数
#endif//直到使用时才实例化对象,如果不被调用就不会占用内存(懒汉式)
#if 1
class singletol
{
public://调用实例化static singletol* getinstance(){if (!s_instance){s_instance = new singletol(200);}return s_instance;}
private:singletol(){}//构造singletol(int data) :m_data(data){}//初始化单参构造singletol(const single&){}//拷贝构造int m_data;static singletol* s_instance;//静态成员变量引用};
singletol* singletol::s_instance(NULL);//自动调用构造函数
#endif
void main()
{
//懒汉式(创建地址不一致)singletol *s1 = singletol::getinstance();singletol *s2 = singletol::getinstance();cout << &s1 << " " << &s2 << endl;
//饿汉式(创建地址一致)single &st1 = single::getinstance();single &st2 = single::getinstance();cout << &st1 << " " << &st2 << endl;system("pause");
}
运行结果
00F1F8B8 00F1F8AC
00E10694 00E10694
请按任意键继续. . .
这篇关于C++_单列模式介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!