91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計一個類,我們只能生成該類的一個實例。

發布時間:2020-07-30 02:29:40 來源:網絡 閱讀:960 作者:秋笙夏笛 欄目:編程語言
 單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。
從具體實現角度來說,就是以下三點:一是單例模式的類只提供私有的構造函數,二是類定義中含有一個該類的靜態私有對象,三是該類提供了一個靜態的公有的函數用于創建或獲取它本身的靜態私有對象。

(1)這種方法只適用單線程。

#include<iostream>
#include<stdlib.h>
using namespace std;
class Csingleton
{
private:
    Csingleton()//構造函數私有化
    { 
        cout<<"Csingleton()"<<endl;
    }
	static Csingleton* m_pInstance;
public:
    static Csingleton* GetInstance()
    {
      //判斷是否是第一次調用
       
      if(m_pInstance==NULL)
        {
            m_pInstance= new Csingleton();
        }
      return m_pInstance;
    }
};
Csingleton* Csingleton::m_pInstance=NULL;
void test()
{
    Csingleton* c=Csingleton::GetInstance();
    Csingleton* s=Csingleton::GetInstance();
 
}
int main()
{
    test();
    system("pause");
    return 0;
}

(2)多線程,當Csingleton還沒有創建出來時,需要加把鎖;當Csingleton創建出來之后,無需加鎖。

#include<iostream>
#include<stdlib.h>
using namespace std;
class Csingleton
{
private:
    Csingleton()//構造函數私有化
    { 
        cout<<"Csingleton()"<<endl;
    }
	static Csingleton* m_pInstance;
public:
    static Csingleton* GetInstance()
    {
      //判斷是否是第一次調用
       
      if(m_pInstance==NULL)
        {
			/*lock(syncObj);*/
            m_pInstance= new Csingleton();
        }
      return m_pInstance;
    }
};
Csingleton* Csingleton::m_pInstance=NULL;
void test()
{
    Csingleton* c=Csingleton::GetInstance();
    Csingleton* s=Csingleton::GetInstance();
 
}
int main()
{
    test();
    system("pause");
    return 0;
}

(3)利用靜態構造函數,初始化靜態變量的時候創建實例。

#include<iostream>
#include<stdlib.h>
using namespace std;
class Csingleton
{
private:
    Csingleton()//構造函數私有化
    { 
        cout<<"Csingleton()"<<endl;
    }
private:
	static Csingleton* m_pInstance=new Csingleton();
public:
    static Csingleton* GetInstance()
    {
      return m_pInstance;
    }
};
void test()
{
    Csingleton* c=Csingleton::GetInstance();
    Csingleton* s=Csingleton::GetInstance();
 
}
int main()
{
    test();
    system("pause");
    return 0;
}

結果:

設計一個類,我們只能生成該類的一個實例。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

株洲县| 北流市| 肇源县| 苏州市| 胶州市| 朝阳市| 农安县| 开远市| 灵川县| 瓦房店市| 岚皋县| 隆安县| 吉林市| 江永县| 肇东市| 贞丰县| 鄱阳县| 汝城县| 越西县| 昌图县| 汪清县| 昌乐县| 中卫市| 博野县| 无为县| 灵璧县| 济源市| 惠来县| 平原县| 洛宁县| 乐陵市| 友谊县| 承德市| 格尔木市| 保亭| 桃园市| 海口市| 泰安市| 交口县| 澄江县| 望城县|