【C++八股】const和define的区别
1. #define
(宏定义)
✅ 作用:使用 预处理器(Preprocessor)在编译前进行文本替换。
✅ 本质:无类型检查的纯文本替换。
2. const
(常量)
✅ 作用:定义类型安全的常量,在编译阶段进行检查。
✅ 本质:真正的变量,有类型检查,可以调试。
✅ 特点:
- 有类型检查,更安全。
- 可以调试,错误信息会明确指出变量问题。
- 可能占用内存(编译器优化后可能会直接替换)。
- 支持作用域控制(可以是局部变量或全局变量)。
3. const
vs #define
对比![](https://i-blog.csdnimg.cn/direct/8ef9c2f8077b433f989b8c54ad22338e.png)
4. #define
vs const
考点
-
为什么
#define
不能完全替代const
?#define
只是文本替换,没有类型检查,容易出错。const
变量有类型,编译器可以进行安全检查。
-
const
变量会占用内存吗?- 不一定,如果
const
变量没有取地址,编译器通常会直接替换成字面值,不会占用额外内存。
- 不一定,如果
-
什么时候应该用
const
而不是#define
?- 需要类型安全时,应该使用
const
。 - 需要可调试性时,应该使用
const
。 - 需要局部作用域时,应该使用
const
。
- 需要类型安全时,应该使用
✅ 最佳实践
- 定义常量用
const
,不要用#define
! - 如果是数组大小等,可以用
constexpr
代替const
(C++11+)。