Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengendalikan Getter Pendua dengan Elegan dalam C?
Mengatasi Pendua Pendapat dengan Keanggunan
Pertemuan dengan kaedah pengambil yang berlebihan untuk pembolehubah pendua, const dan bukan const boleh mengecewakan. Pertimbangkan contoh:
class Foobar { public: Something& getSomething(int index); const Something& getSomething(int index) const; };
Melaksanakan mana-mana kaedah dengan yang lain adalah mustahil kerana ketidakupayaan untuk menggunakan versi bukan const daripada kaedah const. Pelakon diperlukan untuk memanggil versi const daripada versi bukan const.
Penyelesaian Praktikal
Walaupun tiada penyelesaian yang sempurna, satu pendekatan pragmatik adalah dengan melaksanakan versi bukan const dengan membuang const daripada versi const. Walaupun kesederhanaannya, kaedah ini memastikan keselamatan. Memandangkan fungsi ahli memanggil adalah bukan const, objek juga bukan const, membolehkan cast dilakukan.
class Foo { public: const int& get() const { // Non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } private: int foo; };
Dengan menggunakan pendekatan ini, anda boleh menghapuskan keperluan untuk kaedah getter pendua dan mengekalkan keselamatan kod anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Getter Pendua dengan Elegan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!