局部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常量放在类里面或者是全局更好,但一个常量如果只在一个函数中使用,在这里声明一个局部的常量,可提高程序的可读性,同时在数值修改时,减少很多工作,并且作为局部的名字,不会污染类内的名字空间!是一个挺不错的设计~
- 局部Const 常量!今天学到啦~
- 今天面试学到的
- Vim今天学到的
- Vim今天学到的
- Vim今天学到的
- Vim今天学到的
- 今天学到的东西
- 今天学到一个高招
- 今天学到的
- 今天学到了枚举
- 今天学到的新知识
- 大学计算机我们学到啦什么?
- 常量const
- const常量
- 常量(const)
- 常量const
- const 常量
- const常量
- asp.net 控件的 ID ,ClientID ,UniqueID 区别
- MyEclipse使用经验总结
- 有关vc和teechart的话题
- 彻底删除Oracle!
- session 与 cookie
- 局部Const 常量!今天学到啦~
- android实现开机自启动服务
- STL
- android phone电话调用流程
- iphone ios AV Foundation
- sql日期格式化
- 服务器网站搭建
- Java 事件触发接口回调方法
- 大学实训