c 單例模式的一點疑問,求解答?

時間 2021-06-01 04:46:35

1樓:歐文韜

既然是單例了,自然不允許拷貝和轉移啦。講道理是應該delete掉的。

給你看個sample吧

除了你說的delete問題外還有些訪問許可權控制的問題

2樓:Xi Yang

說多一點:我認為單例實現成什麼樣子,完全取決於具體需要,根本不用那麼教條。比如:

1:業務邏輯是否真的需要(盡可能)嚴格限制全域性僅有乙個例項?

有些時候業務邏輯並沒有這種限制,那麼連講建構函式設為protected/private都是不需要的。比如隨機數生成器:我提供乙個getInstance靜態方法,讓你在要求不高的時候,直接使用全域性的例項,避免反覆建立、持有大量PRNG例項帶來的代價;同時也允許你另外構造、持有自己的PRNG例項,以便你在需要特定的隨機數序列的時候,能夠嚴格控制PRNG初始狀態與後續序列。

2:如果1無所謂,不需要嚴格限制全域性唯一例項,那麼是否需要限制複製?

如果這個類在業務邏輯上可以複製,那就讓使用者複製唄。

3:是否需要乙個人工釋放單例的方法?是否需要多執行緒訪問?

如果不需要,完全可以把單例簡化成函式包裝的靜態變數:

MyType& get_instance()保證在第一次訪問時建立,在程式退出時析構,簡單粗暴。就是不能提前析構。

c 的單例模式為什麼不直接全部使用static,而是非要例項化乙個物件?

XZiar 很多時候其實就是花括號換不換行的問題,兩方可能各自看不順眼,但其實都能用。不過還是有一些很重要的區別的。首先,靜態成員變數的初始化順序不可控。比如a和b兩個變數,b需要通過a建立。類的建構函式是能保證按照初始化列表順序來的,但如果寫成靜態成員的話 由於C 不存在靜態類的說法,也沒有靜態建...

關於打針的一點疑問?

魯公尺那 個人感覺在打針的時候患者表示疼痛,醫護人員都是能夠理解的,並會適當的提醒患者放鬆,不會說不開心,但是確實遇到那種抽血打針,大喊大叫,救命的,實在不敢恭維,這點小疼痛都忍受不了,還不是嬌氣嘛,加上醫護人員每天的工作強度有那麼大,不可能時時刻刻都保持微笑好的態度對待每一位病人的,也希望病人能夠...

關於Python中iter 函式的一點疑問

王濤 for i in iter a 3 print i 這列印的是3個迭代器物件,引用型別,位址相同。for i in iter a 3 print list i 迭代器自身包含狀態,第一次列印後狀態已更新,故後面列印為空列表。可見Effectvie python中關於迭代器的描述。 曠修 這個問...