設計乙個類,只能實現1個例項或3個例項

2021-08-27 16:52:37 字數 914 閱讀 6323

/*********************************************

題目: 1)設計乙個類,我們只能生成該類的乙個例項

2)設計乙個類,只能生成該類的3個例項

******************************************/

//1)

#includeusing namespace std;

class csingleton

static void release() //必須,否則會導致記憶體洩露

} protected:

csingleton()

else

return 0;

}

為了防止從類的外部呼叫建構函式,產生類的新的例項,我們應該把該類的建構函式宣告成protected或者private。

由於只能生成乙個類的例項,我們可以考慮用靜態成員函式來記錄,到底之前有沒有構造過類的例項。如果沒有構造過,那麼就構造乙個新的例項。

如果構造過,那麼就把之前構造的那個例項返回。為了保證之前構造的例項,在程式執行期間一直存在,不被析構,我們只能把指向這個例項的指標宣告成靜態變數,

存放在靜態儲存區,把這個類的例項用new來構造,並放在堆裡。

//2)

#includeusing namespace std;

class finalclass

static void setcount(int n)

private:

finalclass(){}

~finalclass(){}

};int finalclass::count = 0;

int main()

參考:mark:

設計乙個類,只能生成該類的乙個例項

只能生成乙個例項的類是實現了singleton 單例 模式的型別。解題思路 根據題目的要求,1.必須把建構函式設為私有函式,防止他人建立例項。2.在類中建立靜態私有的例項,在需要時建立該例項,直到程式結束才銷毀。3.提供乙個靜態的公有的函式用於建立 獲取靜態私有物件。在系統的日誌輸出,gui應用必須...

只能生成乙個例項的類

這次遇到的是乙個c 問題,本著迎難而上精神雖然c 不熟但是盤它就行了。問題如下 用linux編譯c 需要先搭建環境,那就先搭建乙個吧。搭建環境有好多坑,根據以下內容可以完成並且解決各種問題 還有就是4版本以上的,只能用mcs命令編譯 搭建好之後可以開始寫 了,對c 不太熟悉先了解一些基礎概念 1 s...

設計乙個只能在堆上或棧上例項化的類

一道c 筆試題 設計乙個只能在堆記憶體上例項化的類和乙個只能在棧記憶體上例項化的類 只能在堆記憶體上例項化的類 將析構函式定義為private,在棧上不能自動呼叫析構函式,只能手動呼叫。也可以將建構函式定義為private,但這樣需要手動寫乙個函式實現物件的構造。只能在棧記憶體上例項化的類 將函式o...