Bolehkah Kelas C Rujukan Sendiri sebagai Ahli?
Bayangkan senario di mana anda sedang mengusahakan program C dan keinginan untuk mencipta kelas yang mewakili pokok ekspresi. Dalam kelas ini, anda ingin menentukan kaedah untuk melintasi dan menilai pepohon dalam susunan postfix. Walau bagaimanapun, semasa anda mendalami pelaksanaannya, anda menghadapi isu yang membingungkan:
`
Nod kelas {
char *cargo; Node left; Node right;
};
Anda menyedari dengan kecewa bahawa anda tidak dapat mengisytiharkan 'kiri' dan 'kanan' sebagai Jenis 'nod'. Ini menimbulkan persoalan asas: bolehkah kelas C memasukkan dirinya sebagai ahli?
Menyingkap Had
Jawapan kepada soalan ini ialah "tidak." Mengisytiharkan ahli sebagai jenis 'Nod' mencipta rekursi tak terhingga. Setiap Nod akan mengandungi dua objek Nod lain, yang seterusnya akan mengandungi dua lagi objek Nod, ad infinitum. Takrifan rekursif ini membawa kepada objek bersaiz tak terhingga, yang sememangnya tidak boleh dilaksanakan.
Memperkenalkan Penunjuk kepada Penyelamat
Walaupun kelas tidak boleh merujuk dirinya secara langsung sebagai ahli , ia masih boleh mengekalkan rujukan kepada dirinya sendiri melalui penunjuk. Berikut ialah versi pindaan kelas anda yang menangani isu ini:
`
Nod kelas {
char *cargo; Node* left; // Pointer to a Node Node* right; // Pointer to a Node
};
`
Dengan menggunakan penunjuk, anda boleh mengekalkan struktur pepohon di mana setiap nod merujuk nod lain dalam struktur yang sama kelas. Ini membolehkan anda melintasi dan menilai pepohon ungkapan dengan cekap tanpa menghadapi rekursi tak terhingga.
Atas ialah kandungan terperinci Bolehkah Kelas C Mengandungi Dirinya sebagai Pembolehubah Ahli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!