Rumah > pembangunan bahagian belakang > C++ > Mengapa Memulangkan Rujukan Diutamakan untuk Pelaksanaan C Singleton?

Mengapa Memulangkan Rujukan Diutamakan untuk Pelaksanaan C Singleton?

Barbara Streisand
Lepaskan: 2024-11-03 21:50:30
asal
1138 orang telah melayarinya

Why is Returning a Reference Preferred for C   Singleton Implementation?

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>
Salin selepas log masuk

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:

  • Pembina hendaklah diisytiharkan peribadi untuk menghalang penciptaan objek langsung.
  • Pembina salin dan pengendali tugasan harus dipadamkan secara eksplisit untuk menguatkuasakan satu kejadian.
  • Pemusnah haruslah maya untuk membenarkan pemusnahan kelas terbitan yang betul jika diperlukan.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan