一、 const 和 #define的区别
1、定义:const 是c++修饰符,用来修饰常量;#define是宏定义语句;
2、内存消耗:系统有为const 变量分配内存,存放在静态区,程序运行中只有一个拷贝,#define只是给出一个立即数,有多个拷贝,比const消耗的内存大得多;
3、安全性:const变量有数据类型,编译时会进行类型检查,更安全,#define没有,在预处理阶段只是简单的文本替换
4、调试:#define所定义的宏变量在预编译的时候进行替换,const变量在编译时确定其值。const,enum 变量进符号表,可在调试中查看变量的值, 而#define不行。
二、结论
1、对于单纯的常量,最好以const对象或 enum替换 #define;
2、对于形似函数的宏,最好利用inline函数替换 #define。