C ++中的#define和const关键字有什么区别?

#define指令是预处理程序指令;预处理器会在编译器看到宏之前按其主体替换这些宏。可以将其视为自动搜索并替换源代码。

const变量声明使用该语言声明了一个实际变量,您可以像使用实际变量一样使用它:获取其地址,传递它,进行转换,转换等。

如果不进行编译器优化,则在不同情况下与这两者相关联的内存分配存在隐性成本。但是通过适当的优化,它们或多或少是相同的。此外,预处理器宏没有任何作用域,而const值却有。