Contoh C Singleton
Dalam C , corak Singleton memastikan bahawa kelas hanya mempunyai satu tika sepanjang pelaksanaan program. Berikut ialah contoh yang dipertingkatkan bagi pelaksanaan Singleton:
<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>
Perbincangan:
Mengapa Elakkan Mengembalikan Penunjuk?
Kod sampel yang diberikan pada mulanya mengembalikan penunjuk kepada contoh Singleton. Walau bagaimanapun, pengembalian rujukan dianggap lebih sesuai untuk Singletons kerana ia menghalang deallocation manual bagi contoh tersebut. Hayat objek harus diuruskan oleh kelas Singleton itu sendiri.
Permulaan Malas:
Sampel yang dipertingkatkan menggunakan pembolehubah statik yang dimulakan oleh kaedah fungsi untuk mencapai pengamulaan malas. Teknik ini memastikan Singleton dicipta hanya apabila ia diperlukan, meningkatkan kecekapan.
Pemusnahan Terjamin:
Dengan mengembalikan rujukan, Singleton memastikan bahawa contoh itu adalah tidak dimusnahkan sebelum waktunya. Ia juga menjaga kemusnahan yang betul apabila program keluar, kerana rujukan kepada Singleton dikeluarkan secara automatik.
Nota Tambahan:
Atas ialah kandungan terperinci Mengapa Memulangkan Rujukan Diutamakan untuk Pelaksanaan C Singleton?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!