C++中,#define和const都可以用来定义常量。但是它们有着本质的区别:
#define PI 3.14 const double PI = 3.14;
#define是C/C++中的预处理指令,在编译前会被编译器处理,也就是说在编译时宏定义就已经被替换掉了,不存在类型检查,而const是在编译时才会被检查,编译器会对它进行类型检查。
#define定义的宏只是一个简单的文本替换,它只是单纯的把宏定义的名字替换成宏定义的内容,而const定义的常量则是真正的变量,它会在内存中开辟一段空间存储变量的值,可以被程序引用。
#define定义的宏没有作用域的概念,它在整个程序中都有效,而const定义的常量则有作用域的概念,它只在定义它的作用域内有效,出了它的作用域就无效了。
#define定义的宏更加灵活,而const定义的常量更加安全,使用时可以根据实际情况进行选择。