Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Kedua-dua Const dan Non-Const Getters dengan Cekap dalam C ?

Bagaimanakah Saya Boleh Melaksanakan Kedua-dua Const dan Non-Const Getters dengan Cekap dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-12-02 17:43:15579semak imbas

How Can I Efficiently Implement Both Const and Non-Const Getters in C  ?

Mengatasi Teka-teki Const untuk Pendua Pendua

Dilema timbul apabila melaksanakan getter dalam kelas dengan versi const dan bukan const. Menyusun ralat menghalang pelaksanaan mana-mana kaedah menggunakan yang lain. Selain itu, pemutus adalah perlu untuk memanggil versi const daripada versi bukan const.

Penyelesaian Elegan

Efektif C mencadangkan penyelesaian yang tidak konvensional lagi berkesan: laksanakan bukan -versi const dengan membuang const daripada versi const. Walaupun tidak menyenangkan dari segi estetik, pendekatan ini menjamin keselamatan kerana fungsi panggilan bukan const. Oleh itu, membuang const daripada objek const adalah dibenarkan.

Contoh:

class Foo
{
public:
    const int& get() const
    {
        // Non-trivial work
        return foo;
    }

    int& get()
    {
        return const_cast<int&>(const_cast<const Foo*>(this)->get());
    }
};

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kedua-dua Const dan Non-Const Getters dengan Cekap dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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