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
Lepaskan: 2024-12-02 17:43:15
asal
529 orang telah melayarinya

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());
    }
};
Salin selepas log masuk

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!

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