C++中const用法总结

1 使用const修饰变量

有时候我们需要定义这样一种变量,它的值不能被更改。为了满足这一要求,可以通过关键字const对变量的类型加以限定。

1.1 const 修饰普通的变量

const int bufSize=512;

这里将bufSize定义成了一个常量。任何试图为bufSize赋值的行为都将引发错误。
注意:const对象必须初始化,因为const对象一旦创建后其值就不能再改变。
如:

const int j=42; //正确,编译时初始化
const int i=get_size();//正确,运行时初始化
const int k;  //错误,未初始化
int i=42;
const int ci=i;//正确,

1.2 const的引用

常量的引用(reference to const),将引用绑定到const对象上。与普通引用不同的是:
(1)对常量的引用不能用于修改它所绑定的对象。
(2)不能将非常量引用指向一个常量对象值。
(1)对常量的引用不能用于修改它所绑定的对象。

int i=42;
int &r1=i;
const int &r2=i;//r2也绑定了对象i,但不允许通过r2修改i的值
r1=0;           //正确
r2=0;           //错误,r2是一个常量引用

(2)不能将非常量引用指向一个常量对象。

const int ci=1024;
int &r2=ci;         //错误,试图让一个非常量引用指向一个常量对象

1.3 const与指针

const修饰指针变量有3种情况:
(1)指向常量的指针(pointer to const)不能用于改变其所指对象的值。
(2)常量指针(const pointer),指针本身定义为常量。
(3)const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。

(1)指向常量的指针(pointer to const),不能通过该指针改变其所指对象的值。

const double pi=3.14;
double *ptr=π            //错误:ptr是一个普通的指针。
const double *cptr=π //正确:
*cptr=42;                        //错误:不能给*cptr赋值

指向常量的指针也可以指向一个非常量对象。

double val=3.14;
*cptr=&val;         //正确,但不能通过cptr改变val的值。

注意:指向常量的指针仅仅不能通过该指针改变所指对象的值。
(2)常量指针(const pointer),指针本身定义为常量。
常量指针必须被初始化,一旦初始化完成,它的值(也就是存放在指针中的那个地址)将不能被改变。
把*放在const关键字之前用以说明指针是一个常量。

int errorNumb=0;
int *const curErr=&errorNumb;            //正确:curErr将一直指向errorNumb

(3)将上述两种结合,指向常量对象的常量指针

int a=10;
const int * const p=&a;//

上面的例子中,不能通过指针p修改其所指对象的值(变量a),并且指针p必须被初始化,一旦初始化后,它的值将不能被改变(也就是指针p只能指向a)。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值