首页 > 代码库 > 游戏效率优化(2) 使用const关键字

游戏效率优化(2) 使用const关键字

游戏效率优化(2)使用const关键字

DionysosLai  2014-5-15

         使用const有很多好处,比方保护被修饰的东西,防止意外修改,提高程序健壮性等作用。不过使用const 可以提高程序运行效率,却很少有人知道。

         下面看几个例子,在看cocos2d源码时,我们经常会看到如下类似的代码:

ccpAdd(const CCPoint& v1, const CCPoint& v2)
{
    return v1 + v2;
}
ccpSub(const CCPoint& v1, const CCPoint& v2)
{
    return v1 - v2;
}
看到这段代码,我们首先会觉得很奇怪,函数设计的本意是不要改变形参的值,通常我们会这样写道:

ccpAdd(const CCPoint v1, const CCPoint v2)
{
    return v1 + v2;
}

         这样,就可以不用改变函数中形参的值,那么cocos2dx的作者又为什么要将形参定义成引用类型呢?

         这个问题的原因在于:在调用函数时,如果传入的值不是指针、引用的话,那么会临时动态申请一块内存,保存传入的参数,接下来函数所有对这个参数的操作均会在这个内存中进行。如果我们传入的引用的话,那么就可以直接在参数内存中调用,而不需要临时动态申请空间,最后还要销毁这块空间问题。但,使用引用的话,又存在改变参数值的问题,因此我们会给引用加上“const”修饰符,防止被修饰的东西,发生意外修改。

         这个问题,在这之前自己也没发现,后来是同事告诉我这个现象。SOGA,一起努力,我也把这个方法告诉大家。