[C++] const标识符

[C++] const标识符


const 简单来说是一个常量的标识符,如果需要一个具有确定且不变的常量时可以使用,一经定义后面不再改变,所以必须初始化。
例如,定义缓冲区大小:

const int bufferSize = 512;
double a = 3.14;

const和引用
1.常量的引用
2.引用常量

// 常量的引用
int &ri = bufferSize; //错误,不可以用一般引用去绑定一个常量,因为不可以修改,而一般引用时允许修改的
const int &ri = bufferSize; // 正确,引用常量和常量绑定,符合规范
// 引用常量
const int &r2 = a; // 正确,不允许使用r2来修改a的值
// 不难看出,上面等式打破了引用类型必须与其所引用对象的类型一致
// 上述实际执行的是:
int temp = a;
const int &r2 = temp;
// temp称为临时量对象,一般创建引用绑定对象目的就是要使用引用来改变值。 如果不是用引用常量绑定则错误。

const和指针
1.指向常量的指针
2.指针常量

// 指向常量的指针  仅仅要求不能通过该指针改变对象的值
int *ri = &bufferSize; // 错误,ri是普通指针
const int *ri = &bufferSize; //正确,ri指向 bufferSize 常量的地址不可以使用ri去修改bufferSize的值
const int *r2 = &a; //正确,但是不可以使用r2来修改a的值,a不是常量即允许一个指向常量的指针指向一个非常量对象
// 不难看出,上面的等式打破了 指针类型必须与所指对象的类型一致

// 指针常量,能否修改完全取决于所指对象是否为常量
double *const r3 = &a;//r3是一个指向一般的非常量整数,可以用r3来修改a的值 *r3 = 3;
const int *const ri = &bufferSize; // ri 是一个指向常量对象的常量指针,如何都不可以修改bufferSize的值

const阶级
1.顶层
2.底层

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值