Rumah > pembangunan bahagian belakang > C++ > Bilakah Saya Harus Menggunakan Pengisytiharan Hadapan Daripada Termasuk dalam C ?

Bilakah Saya Harus Menggunakan Pengisytiharan Hadapan Daripada Termasuk dalam C ?

Linda Hamilton
Lepaskan: 2024-12-05 18:37:10
asal
503 orang telah melayarinya

When Should I Use Forward Declarations Instead of Includes in C  ?

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;
    ...
};
Salin selepas log masuk

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;
    ...
};
Salin selepas log masuk

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:

  • Kompilasi yang dikurangkan masa: Pengisytiharan ke hadapan hanya memberikan pengkompil dengan maklumat minimum yang diperlukan tentang kelas, mengurangkan masa penyusunan berbanding dengan memasukkan fail pengepala penuh.
  • Pencemaran pengepala dikurangkan: Termasuk pengepala secara tidak perlu memperkenalkan simbol tambahan ke dalam unit terjemahan, yang berpotensi membawa kepada perlanggaran nama atau pencemaran. Pengisytiharan ke hadapan mengelakkan isu ini dengan hanya mengisytiharkan nama kelas.
  • Mengelakkan kebergantungan bulat: Pengisytiharan ke hadapan memecahkan kebergantungan bulat dengan membenarkan kelas merujuk antara satu sama lain tanpa perlu memasukkan semua pengepala yang diperlukan fail.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan