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!