cách đầu tiên của bạn làm việc đó có nghĩa là trong a.h
, sự tồn tại của class B
được biết đến, nhưng không phải là định nghĩa của nó . Điều này giới hạn những gì bạn có thể làm với B
bên trong a.h
. Ví dụ, bạn có thể có các biến kiểu B *
, nhưng không phải là biến kiểu B
(vì khai báo biến kiểu B
trình biên dịch phải có khả năng xem định nghĩa đầy đủ của B
). Ngoài ra, nếu bạn có các biến loại B *
, bạn không thể dereference con trỏ (vì cho rằng, quá, định nghĩa của B
phải được biết).
Vì vậy, lựa chọn thứ hai của bạn – không có vấn đề này – được ưu tiên và đây là điều mà hầu hết mọi người sử dụng hầu hết thời gian.
Đó chỉ là trường hợp đặc biệt mà phương pháp đầu tiên có thể hữu ích. Ví dụ:
- Nếu
.h
file bao gồm nhau (nhưng sau đó bạn có thể nhận được một số vấn đề hơn nữa, cũng liên quan đến bao gồm-bảo vệ, điều này nói chung là rất khó khăn và cần phải tránh);
- Nếu
b.h
là cực kỳ lớn và phức tạp, vì vậy bạn muốn tránh bao gồm nó bất cứ nơi nào có thể bởi vì nó làm chậm quá trình biên dịch.
làm như: '#include" B.h "' –
à, tôi sẽ cẩn thận ... – colddie