Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kita Boleh Melaksanakan Kata Kunci 'Diri' Autonomi dalam C ?
Self in C : The Autonomous Implementation
Kata kunci diri, yang digunakan secara meluas dalam bahasa seperti PHP, menimbulkan cabaran dalam C kerana ketiadaan mekanisme yang setara. Walaupun pelaksanaan khusus kelas menggunakan typedef bersarang adalah mudah, ia memerlukan pertindihan dan risiko memperkenalkan pepijat halus. Artikel ini meneroka penyelesaian elegan menggunakan decltype dan templat untuk mencapai pelaksanaan kendiri autonomi.
Mengisytiharkan Diri dengan decltype
Percubaan awal untuk memperkenalkan diri menggunakan decltype gagal kerana ia cuba mengakses ini di luar kejadian. Untuk menyelesaikan masalah ini, kita perlu merangkumkan pengisytiharan diri dalam templat:
template <typename X, typename...Ts> class SelfBase<X,Ts...>: public Ts... { protected: typedef X self; };
Templat ini berfungsi sebagai kelas asas untuk jenis yang boleh mengakses diri.
Makro Kemudahan
Untuk menjadikan penggunaan SelfBase lebih mudah, dua makro ialah diperkenalkan:
Contoh
Menggunakan makro ini, kita kini boleh mentakrifkan kelas dengan diri sendiri:
class WITH_SELF(Foo) { void test() { self foo; // self is now available } }; // Multiple inheritance class WITH_SELF_DERIVED(Bar,Foo,Foo2) { /* ... */ };
Kesimpulan
Dengan memanfaatkan decltype dan templat, adalah mungkin untuk laksanakan jenis ahli kendiri autonomi dalam C . Pendekatan ini membolehkan penggunaan diri dalam kelas tanpa risiko pepijat senyap disebabkan pentakrifan semula kelas yang rosak. Makro kemudahan yang disediakan menjadikan pelaksanaannya mudah dan fleksibel, membenarkan pewarisan kelas asas berbilang dan gabungan berbeza kelas asas sendiri dan biasa.
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Melaksanakan Kata Kunci 'Diri' Autonomi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!