c++ const和#define

来源:互联网 发布:大黄蜂爱国者数据 编辑:程序博客网 时间:2024/06/02 05:18

const可以定义一个常量,而#define也可以

在一些业务代码中,常常用#define 定义一个全局的常量。比如IMAGE_HEIGHT。

其作用,是在所有包含该代码段的文本中(一般#define定义在头文件中,然后被别的文件包含),用更可读的宏 替代常值的出现。

const也可以做到这一点,但是它在程序中,会占用运行时的内存。在跨文件的时候,还要考虑const是否存在。避免编译错误。所以#define更常用。

但是有一种情况需要用const变量:

1 这个常值只出现在本文件或引用本文件的内容中,不会到处调用。

2 由于变量过多,避免命名过长以及命名重复

比如,在文件cat.cpp中,有leg_length,表示猫腿的长度。文件dog.cpp中,也有leg_length,表示狗腿的长度。而两个长度不同。

这时const一个全局变量,比#define 要好一些。

而且这种const的变量,建议大写,像宏一样。


###

为什么不能通过命名成cat_leg_length和dog_leg_length来区分呢?

可以,但是使用简短的命名在工程中很有必要,可以让程序员第一眼看到重点。