Sử dụng Forward Declaration trong C++

Giả sử có 2 class là ClassAClassB, mỗi class đều có file .h và .cpp tương ứng và bạn muốn sử dụng ClassA trong ClassB. Theo cách thông thường, bạn sẽ phải include header file của ClassA trong cả file .h và .cpp của ClassB

Trong ClassB.h ta include trực tiếp file ClassA.h

Trong ClassB.cpp include ClassB.h

ClassA.h đã được include trong ClassB.h nên ClassA.h cũng đã được include trong ClassB.cpp

Tuy nhiên có một điều mà các bạn nên biết, đó là file .cpp của ClassB thì luôn luôn cần include file .h của ClassA nhưng file .h của ClassB thì không phải lúc nào cũng cần thiết phải include file .h của ClassA. Việc include thừa nếu không thực sự cần thiết sẽ làm tốn thời gian biên dịch chương trình.

Nếu trong file ClassB.h chúng ta chỉ tham chiếu đến ClassA thông qua con trỏ hoặc biến tham chiếu của hàm mà không gọi đến bất cứ phương thức (bao gồm cả constructor) hay truy cập bất cứ thuộc tính của nào ClassA thì chúng ta có thể sử dụng tính năng Forward Declaration của C++ thay vì include file .h của ClassA.

Trong file ClassB.h ta thêm khai báo sau

— Author: Phạm Minh Tuấn (Shun) —