神奇的“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 成员函数的作用就是防止在该函数内部修改任何对象的成员变量值。

  先写这么多吧,太累了。

 

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值