Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengelak Pendapat Pendua untuk Fungsi Ahli Const dan Bukan Const dalam C ?

Bagaimanakah Saya Boleh Mengelak Pendapat Pendua untuk Fungsi Ahli Const dan Bukan Const dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-02 11:42:16327semak imbas

How Can I Avoid Duplicate Getters for Const and Non-Const Member Functions in C  ?

Penyelesaian Elegan untuk Menduakan Getter untuk Objek Const dan Bukan Const

Apabila berurusan dengan getter dalam C , pembangun sering menghadapi dilema untuk mempunyai untuk mencipta pelaksanaan berasingan untuk versi const dan bukan const. Ini boleh menyusahkan apabila logik untuk kedua-dua getter adalah hampir sama.

Satu penyelesaian yang berpotensi untuk isu ini ialah melaksanakan versi bukan const dengan membuang const daripada versi const. Pendekatan ini dianggap selamat kerana fungsi panggilan bukan const, yang membayangkan bahawa objek itu sendiri bukan const, membenarkan penukaran.

Contohnya:

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

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

Pendekatan ini mungkin tidak menyenangkan dari segi estetika, tetapi ia menjamin keselamatan dan mengelakkan keperluan untuk pelaksanaan berasingan dalam banyak kes. Ia membolehkan pembangun menumpukan pada fungsi teras getter dan bukannya menduplikasi kod.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Pendapat Pendua untuk Fungsi Ahli Const dan Bukan Const 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