用来代替#define的const

             用来代替#define的const

    C++中提倡用const 来代替 #define.
       好处1 :
     const 进行类型安全检查
     好处2:
     const 是有类型的,比如  
const int          val = 0;

const double       val = 0;
   但是const功能不仅仅于此。而且不同地方出现的const,意义不尽相同,也有一定区别。
这里仅讨论 用作代替#define的const的用法和性质
  首先 在xxx.h文件中原来的
    #define MAX 100 ---->  const int MAX 100;
 
    说明:
      1 首先const默认是内部变量,只在本cpp文件中有效,不然一个xxx.h被多个cpp
文件引用后,肯定会重定义。由于const 是内部变量,所以在多个cpp文件中出现相同的定义完全没有问题。
      2 由于const表示的是常量,也就是值不会被改变,所以编译器就有可能对其做一些优化。 比如很简单,做常量折叠,不给其分配地址空间。
       例如 在xxx.h中定义的
const int MAX = 100;
       这个常量MAX 就很有可能不占内存空间。
       为什么是很有可能?因为如果有以下3中情况,则需要给const分配空间。
       1 const 常量被声明为 extern
       2 对const 常量取地址运算
       3 const 值未定
第一种 由于const被声明为extern 因此其他文件中的函数可能要使用到该常量,所以要给它分配空间。
第二种,取地址了嚒,没空间 哪里来的地址?
第三种,比如:
const int max = i; //i为前面某处定义的变量
此时也要给max分配空间
可以理解,如果 一个const 常量,即没有被取地址,又是本文件内有效,并且值从一开始就是确定的,而且它又是常量,不会被改变,也就没有必要给它分配空间了。于是便和#define变得差不多一摸一样了,除了它是有类型的。
 
 
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

lovegq

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值