const各种复杂声明所代表的意思和功能(备忘)

转载请注明出处,谢谢微笑


http://blog.csdn.net/sprintfwater/article/details/8757379

最近弄了一下const,感觉各种复杂声明代表的意思,让人有点迷糊,在里做总结,以防以后又迷糊:

为了便于讲解:首先定义两个变量:

typedef int  *pint

const int cb = 5;

int b = 5;


const int a = cb

int const a = cb;

所带表意思相同:a为5的常量,不能对a赋值(如:a = 3是错误做法)


const int a = b

int const a = b;

所带表意思相同:a为5的常量,不能对a赋值(如:a = 3是错误做法)


const int  *pa = &cb

int const  *pa  =  &cb;

所带表意思相同;pa为指向常量cb的指针,pa所指对象的值不可改变(如:*pa = 3是错误做法),而a可变改变所指对象(如:pa = &b)



const int  *pa = &b

int const  *pa  =  &b;

所带表意思相同;pa为指向常量b(这里只是pa自认为所指b是常量)的指针,pa所指对象的值可改变但不能通过pa来改变(如:*pa = 3是错误做法),而a可变改变所指对象(如:pa = &b)


const int* const pa = &cb

const pint const pa = &cb

const const print pa = &cb(编译错误:const不能重复)

所带表的意思相同;pa为常量指针,不能将其指向与其它对象(如:pa = &c是错误做法),不能改变pa所指对象的值(如: *pa = 1是错误做法);


int* const pa = &b

pint const pa = &b

const print pa = &b

所带表的意思相同;pa为常量指针,不能将其指向与其它对象(如:pa = &c是错误做法),能改变pa所指对象的值(如: *pa = 1是可行做法);


总之一句话,const表述的是离他最近的那个对象(可能是指针)为常量,不可改变他的值,就行了。


const函数是常成员函数,他只能由常对象调用,他是常对象唯一的对外接口,所以是常对象的就调用const函数,其他的调用非const函数



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值