我有一個「處理器」類,需要幾件事情: 1)訪問允許訪問數據庫的類的實例。 2)訪問字符串實用程序類。 3)在運行時從配置文件讀取的超時整數值。C++:有沒有更好的替代方案來使用這種情況下的靜態屬性?
所以我想指向前兩個作爲成員屬性和第三個簡單的int屬性。通常情況下,在這種情況下,我只需要構造函數爲前兩個指針指針,爲第三個指針指針指針,然後在主體中將成員指派給傳入的項目。
問題是,我將有一個像這個處理器類的100個實例的池,我想知道是否浪費內存讓每個實例都包含它自己的(2)指針和整數屬性,當所有指針指向相同的兩個對象,並且所有整數在整個過程的整個生命週期中都保持相同的值。
我熟悉「全局狀態很糟糕」的概念,並且覺得它不鼓勵使用靜態成員屬性。但在這種情況下,簡單地將這三個屬性設爲靜態是不是更高效?然後,我只是創建一個靜態「initStaticMembers」方法,它接受兩個指針和整數,並將靜態成員屬性分配給傳入的項目。在創建處理器實例池之前,initStaticMembers將被調用一次。
我不是那最後一部分(靜態initStaticMembers方法)的一個巨大的粉絲......只是看起來不太優雅,但我看不到一個更好的選擇。任何人都有建議?我是否認爲使用靜態屬性可以節省內存而不是爲每個處理器類實例提供它自己的一組屬性實例?
我還應該注意到,指向的類是線程安全的,所以我不認爲我需要關心所有處理器共享一個指向每個指針的單個指針。
感謝您的任何反饋意見。
發表您到目前爲止已經提出的一些代碼可能會有所幫助。 – moonbeamer2234
假設32位:2個指針* 4個字節* 100個對象=虛擬空間的4Gb中的800個字節。假設64位:2個指針* 8個字節* 100個對象=大量內存中的1600個字節......你真的需要刮掉1.5K的內存嗎? –
嗯......沒有想到實際上使用的內存有多少。直到我看到數字時,看起來像更多。可能只是讓它們成爲非靜態的類屬性。謝謝。 – Brent212