局部Const 常量!今天学到啦~

           之前看游戏人工智能编程案例精粹有这样一段代码很迷糊~

void DoSomething()

{

    ************

    const double DecelerationTweaker = 0.3;
    double speed =  dist / ((double)deceleration * DecelerationTweaker); 

    ************

}

其中声明了一个局部的const 常量,不理解作者为什么要这样做。今天在群里提问,恰好谈到const,遇到一位高手,给出了答案!

首先说说对const的解释(高手说的):
1 告诉看代码的人 ,这是一个常变量。
2 防止自己不当心修改了这个变量。
3 告诉编译器这是一个常变量,可以优化掉。

 

           然后,在编译器编译的过程中,不会为DecelerationTweaker分配任何内存,编译器会用 0.3来代替这个变量出现的所有地方,编译器不会为这个变量生成空间,也就是说 const double DecelerationTweaker = 0.3 这句语句根本不存在,0.3 会被替换到 每次 DecelerationTweaker 出现的位置。

           但是 如果不是 double 而是 一个对象,编译器还是会忠实的调用构造函数和析构函数的,这个时候用static const 就非常合适啦!

 

          看起来,这个const常量放在类里面或者是全局更好,但一个常量如果只在一个函数中使用,在这里声明一个局部的常量,可提高程序的可读性,同时在数值修改时,减少很多工作,并且作为局部的名字,不会污染类内的名字空间!是一个挺不错的设计~

        

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值