c++中const用法总结

一、const常量对象(最基本用法)

由const修饰的对象,即是一个常量,可以参与任何不会改变其值的操作。

const int Example=1024;//Example是一个值不可改变的常量

使用const常量的注意事项:

1、尽量以const代替#define;

2、const对象仅在文件内有效,即不同文件中的同名const是互相独立的、不同的两个量;

3、(与2相反的做法)不同文件中的const对象前面有extern修饰时,表示它们是同一个const对象。


二、const的引用(即有一个常量,然后用一个引用去绑定它)

用一个引用去绑定一个const常量时,此引用也必须是const修饰的。这种引用不能用于修改它所绑定的值。

const int Example=1024;//一个常量
const int &ReExample=Example;//引用也必须由const修饰。但不是说此引用是一个常量,因为引用不是对象,不存在“变量”“常量”之说

常量引用注意事项:

1、允许常量引用绑定非常量对象、表达式。即:一个常量的引用必须是常量引用,而一个常量引用绑定的对象不一定是常量。


三、指向常量的指针

即在*左边有const修饰的指针。指向的不一定是个常量:

1、当指向常量的指针指向的是一个常量:

const int Example=1024;//一个常量
const int *PtExample=&Example;//则指向它的指针必须由const修饰。指针的值可以改变。

2、当指向常量的指针指向的是一个变量:

int Example=1024;//一个变量
cosnt int *PtExample=&Example;//含义是不能通过该指针去改变此变量的值,但可以通过其他途径改变。指针的值可以改变。

总结:指向常量的指针蕴含的意思是:不能通过此指针去改变它指向的对象的值,但是指针本身是可以改变值的


四、指针本身是个常量(常量指针)

即在*右边有const修饰的指针。指向的也不一定是个常量。不论指向的是变量还是常量,该指针的值不可改变,将一直指向那个对象。

int Example=1024;//一个变量
int *const PtExample=&Example;//PtExample将一直指向Example

const int Example=1024;//一个常量
int *const PtExample=&Example;// Pt是指向常量对象的常量指针

五、const形参和实参

1、非指针、引用的const形参:

void fcn(const int i) //fcn函数的形参i是const的,<span style="color:#FF0000;">仅</span>表示在fcn函数体中,不能去改变i的值,否则报错

但是,在调用fcn函数时所传入的实参,可以是const的,也可以不是const的。

因此,其实void fcn(const int i)和void fcn(int i)是几乎等价的,唯一区别是在前者的函数体中不能改变i的值。

2、const修饰的指针形参、引用形参:

含义与1是一样的。值得牢记的是:当形参里有指针或引用时,最好都用const去修饰。原因:

a、提高代码的健壮性,避免;

b、const修饰的形参既可以接受const实参,也可以接受非const实参,提高了接受范围。


六、类的常量成员

1、常量数据成员

在设计一个类时,将某个数据成员声明为const的,表示此数据成员的值不允许被修改,任何类内、类外函数只可以读取它的值,但不可以改变它。

声明格式与普通的常量声明相同。

2、常量函数成员

在设计一个类时,将某个函数成员声明为const的,表示该函数只能读取调用它的实例的内容,而无权修改它们。

声明时,const放在尾部,即参数表的后面:

int fcn(int i) const 
{}
非内联函数一般类内声明,类外实现。类外实现时此函数也要加const关键字。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值