const用来定义场量(常量指针,常量值,常量引用,函数参数,函数返回值等)。const变量必须在定义时初始化,而且类中的const变量必须在初始化列表中初始化。
(1)const在编译阶段起作用,可以进行调试。#define在预编译阶段起作用,简单替换,不能进行调试
(2)const有类型检查,#define无类型检查,const安全程度高
(3)编译器不为const变量分配空间而是将其存储在符号表中读取效率高占用内存少,define每次用到都要分配空间,占用内存大,效率低
(4)const不能被重新定义,而#define可以通过#unde后进行重新定义
(5)#define还可以用来防止头文件被重复包含问题