const关键字

const关键字的作用:
1. 可以定义const常量,具有不可变性
2. 便于进行类型检查
3. 保护被修饰的东西,防止意外修改
4. 为函数重载提供了参考

void fun(int i){}
void fun(int i)const{}//是上面函数的重载

5.可以节省空间,避免不必要的内存分配

const A
定义一个常量, 声明的同时必须进行初始化,一旦完成,值将不能被改变。

int i = 1;
const int t1 = 10;
const int t2 = i;
t1 = 3;   //错误 t1不能被修改
const int t3;  //错误 未初始化

const B*
定义一个指向常量的指针,其所指对象的值不能被改变

const int i = 1;
const int j = 2;
const int* p = &i;
*p = 3;  //错误  不能更改p所指对象的值
const int *q = new int(4);//正确 q指向的是new出来的对象的地址

区分:
1)const int *p
2)char* int p
const关键字用于修饰常量
对于1):p是一个指向常量字符的指针,int的值不变,若是该字符的值在定义时初始化后就不能再改变。
对于2):p是一个指向整型的常量指针,p的指向不能变。
即:const int* 指针指向的对象不可以改变,但指针本身的值可以改变;int* const 指针本身的值不可改变,但其指向的对象可以改变。

int v1 = 10;
int v2 = 20;
int* const p = &v1;
p = &v2; //错误  不能改变p本身的值
*p = 30; //正确  可以改变p所指对象的值

const int* q = &v1;
*v1 = 40; //错误  不能改变q所指对象的值
q = &v2;  //正确  可以改变q指针本身的值

记忆方法:
从右向左看(以*为分界线)
1)可以记为:p是一个指针,指向一个整型常量
2)可以记为:p是一个常量指针,指向一个整型变量

const int* const str:str是一个指向常量对象的常量指针,既不可以改变指针本身的值,也不可以改变指针指向的对象。

const C&
对常量的引用, 常量引用不能修改其绑定的对象

int i = 1;
const int s = 10;
const int& t = s;//正确
t = 3; //错误  不能改变引用所指的对象

允许使用一个常量引用绑定一个非常亮对象、字面值、表达式,但引用的类型与引用所指的类型必须一致

const D*& 与D *const&
指向常量对象的指针的引用,分两步理解:
const D*是指向常量的指针
const D*& 指向常量指针的引用

const int i = 1;
const int j = 1;
const int *p = &i;
const int *q = &j;
const int * &s = p;
*s = 10; //错误 s指向的是常量对象 常量对象的值不能被改变
s = q;  //正确



int i = 1;
int j = 1;
int *const t1 = &i;
int *const t2 = &j;
int *const &r = t1;
t1 = t2;  //错误 t1是常量指针 其本身的值不能被改变 
*t1 = 3; //正确
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值