include 和 前置声明
2026年4月22日小于 1 分钟
include 和 前置声明
核心区别
| 方式 | 作用 | 编译器能看到什么 |
|---|---|---|
#include | 文本包含 | 类的完整定义(成员、方法、大小) |
| 前置声明 | 符号声明 | 仅知道"这个类型存在" |
何时使用
| 代码写法 | 动作 | 需要 #include 吗 |
|---|---|---|
B* ptr; | 定义指针变量 | ❌ 不需要(用前置声明 class B;) |
B& ref; | 定义引用变量 | ❌ 不需要(用前置声明 class B;) |
B obj; | 实例化对象 | ✅ 必须 |
ptr->func(); | 通过指针调函数 | ✅ 必须(调用处需完整定义) |
ref.func(); | 通过引用调函数 | ✅ 必须 |
经验法则
- 需要知道对象大小(实例化、传值)→
#include - 只需要指针或引用(不关心内部布局)→ 前置声明
