Faedah Pengisytiharan Hadapan melebihi Termasuk
Dalam pengaturcaraan berorientasikan objek, adalah perkara biasa untuk menggunakan kelas untuk mewakili objek dan hubungannya. Apabila kelas merujuk antara satu sama lain, kebergantungan bulat boleh timbul, yang boleh menyebabkan ralat penyusunan. Untuk mengelakkan isu ini, pengisytiharan ke hadapan boleh digunakan sebagai alternatif untuk memasukkan fail pengepala.
Pengisytiharan ke hadapan ialah pengisytiharan yang memberikan pengkompil maklumat tentang kewujudan kelas tanpa mentakrifkan butirannya. Ini membolehkan kelas merujuk satu sama lain mengikut nama, walaupun definisi mereka belum tersedia. Dengan menggunakan pengisytiharan hadapan, kebergantungan bulat boleh dielakkan dan ralat kompilasi boleh dielakkan.
Contoh
Pertimbangkan coretan kod berikut:
// file C.h #include "A.h" #include "B.h" class C { A* a; B b; ... };
Dalam contoh ini, kelas C termasuk kedua-dua fail pengepala A.h dan B.h, yang mungkin membawa kepada kebergantungan bulat jika fail pengepala yang disertakan turut merujuk kelas C.
Untuk menyelesaikan isu ini, pengisytiharan hadapan boleh digunakan sebaliknya:
// file C.h #include "B.h" class A; // forward declaration class C { A* a; B b; ... };
Dalam kod yang diubah suai ini, kelas A dimajukan diisytiharkan, membenarkan kelas C merujuk kepadanya tanpa memasukkan fail pengepala A.h. Takrif kelas A kemudiannya boleh dimasukkan pada peringkat kemudian di mana ia diperlukan, seperti dalam fail sumber C.cpp.
Kelebihan Pengisytiharan Hadapan
Menggunakan pengisytiharan hadapan dan bukannya termasuk di mana mungkin menawarkan beberapa kelebihan:
Kesimpulan
Walaupun pengisytiharan hadapan tidak mempunyai kelemahan utama, penggunaan termasuk secara tidak perlu boleh menyebabkan peningkatan masa penyusunan, pencemaran pengepala dan kemungkinan ralat penyusunan. Oleh itu, adalah disyorkan untuk menggunakan pengisytiharan ke hadapan dan bukannya termasuk di mana mungkin untuk mengelakkan potensi isu ini.
Atas ialah kandungan terperinci Bilakah Saya Harus Menggunakan Pengisytiharan Hadapan Daripada Termasuk dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!