天天看點

C++單例模式:GetInstance()用法

單例模式:一個類有且隻有一個執行個體。

目的:保證類隻有一個執行個體,并提供一個通路它的全局通路點,該執行個體被所有程式子產品共享。

應用:GUI應用必須是單滑鼠,作業系統隻能有一個視窗管理器,一台PC連接配接一個鍵盤,MODEM連接配接有且隻需要一條電話線。

應用背景:一般用于比較複雜的對象,隻初始化一次。

優點:在程式運作時,不會一執行這個類就初始化一次,有效防止資料沖突,節省記憶體空間,不浪費系統資源。

例:

在類student中

static student* instance;

student(){

        //初始化函數可以為空

}

student *student::GetInstance(){

        if(instance==null){

                instance =new student();

        }

        return instance;

}

int student::getA(int xa){//類的成員函數

        xa++;

        return xa;

}

student::getinstance()->getA(xa);//調用類的成員函數

使用new直接初始化VS使用GetInstance()初始化的差別:

  1. GetInstance()可以直接使用,調用多次傳回同一個對象;
  2. new可以在大部分類裡使用(生産一個執行個體對象,或在棧上聲明一個對象),每部分調用都是新的對象,GetInstance()隻在少部分類中使用;
  3. 對象使用之前通過getInstance()得到,不需要自己定義,使用後不需要delete;
  4. new建立後隻能當次使用,GetInstance()可以跨棧區域、遠端跨區域使用;
  5. new一定生成一個新對象,配置設定記憶體,Get Instance()不一定再次建立,可以使用已經存在的引用。

getInstance()用法_懷苛的部落格-CSDN部落格_getinstance閱讀數:275先舉例說明:下面是一個例子,為什麼要把這個類執行個體化?有什麼好處? //執行個體化 public static DBConnect instance; public static DBConnect getInstance(){ if(instance == null){ instance = new DBconnect(); } return instance; ...

C++單例模式:GetInstance()用法

https://blog.csdn.net/qq_41875378/article/details/80921805根據以上連結自我學習;

繼續閱讀