码农

导航

神奇的“const”

const 是C语言里的一个很重要的关键字,其作用是限定一个变量不应该被改变,一定程度上能提高程序的健壮性,为什么说它神奇呢?因为const可被施加在任何作用域内的对象、函数参数、函数返回类型以及成员函数本身,如此多的用法经常闹乱,今天决定好好组织一下留做备用。

    先来个简单的,修饰变量的:

char test[] = "test const";
const char *p = test;    //test 是常量
char const *p = test;    //test 是常量
char *const p = test;    //p 指针是常量

规律:const 出现在星号左边,标示所指的事物事常量;const 出现在星号右边,表示指针自身是常量。

    再来,const最具威力的用法是对函数声明时的应用,在一个函数声明中,const可以和函数的返回值、各个参数以及函数自身(需要是类的成员函数)产生关系。

先看一个我们最常见的:

//获得两个点的距离,Vector3是个三维坐标点类

int distance(const Vector3& pos1, const Vector3& pos2);

这类函数是我们经常用到的,为了防止Vector3不必要的构造函数,减少程序开销,我们参数传入了引用(为什么以后再说跟这里没关系不再赘述),为什么是const 类型的?因为我们一般不希望这两个引用类型的变量在函数里被修改,这个跟上面说的指针差不多。

还有一种是:

cosnt Vector3& getPosition();

这个函数一般用在获得某个类型对象的当前位置的,但是为了防止该位置在外部被修改,我们把返回值声明称const类型。

最后一种:

class Test

{

public:

……

cosnt Vector3& getPosition() const;

};

看第二个const,这个const 成员函数的作用就是防止在该函数内部修改任何对象的成员变量值。

  先写这么多吧,太累了。

 

   

posted on 2010-04-09 17:42  北漂民工  阅读(141)  评论(0编辑  收藏  举报