C 單例範例
在 C 中,單例模式確保類別在程式執行過程中只有一個實例。這是單例實現的改進範例:
<code class="cpp">class A { private: static A* m_pA; explicit A(); // Constructor should be private A(const A&) = delete; // Prevent copying A& operator=(const A&) = delete; // Prevent assignment virtual ~A(); // Destructor public: static A& GetInstance(); // Return a reference to the instance static void FreeInstance(); // Free the instance when no longer needed void WORK1(); void WORK2(); void WORK3(); }; A& A::GetInstance() { if (m_pA == nullptr) { static A instance; // Lazy initialization m_pA = &instance; } return *m_pA; // Return a reference to the instance } void A::FreeInstance() { delete m_pA; m_pA = nullptr; }</code>
討論:
為什麼避免回指標?
提供的範例程式碼最初傳回一個指向 Singleton 實例的指標。然而,返回引用被認為更適合單例,因為它可以防止手動釋放實例。物件的生命週期應該由 Singleton 類別本身管理。
延遲初始化:
改進的範例使用由函數方法初始化的靜態變數來實現延遲初始化。這種技術確保 Singleton 僅在需要時創建,提高了效率。
保證銷毀:
透過回傳引用,Singleton 確保實例是沒有被過早地破壞。當程式退出時,它還負責適當的銷毀,因為對單例的引用會自動釋放。
附加說明:
以上是為什麼 C 單例實現首選返回參考?的詳細內容。更多資訊請關注PHP中文網其他相關文章!