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

来源:互联网 发布:小米视频电视直播软件 编辑:程序博客网 时间:2024/06/06 01:24

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

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

        

原创粉丝点击