在c/c++程序中我们经常使用到它们,由于使用比较频繁,我们就来做一下对比它们各自的作用。从以下几个方面来说明
1、编译器处理方式不同
define宏是在预处理阶段展开。
const常量是编译运行阶段使用。
2、类型和安全检查不同
define宏没有类型,不做任何类型检查,仅仅是展开。
const常量有具体的类型,在编译阶段会执行类型检查。
3、存储方式不同
define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。
const常量会在内存中分配。
const 可以节省空间,提高执行效率,避免不必要的内存分配。
const 修饰函数的返回值、修饰类的成员函数(任何不需要修改数据成员的函数都应该使用const修饰)。