java const用法,C++中const用法的总结

C++中的const是一个很烦人的东西,其用法比较多样化,比如说在声明变量的时候既可以放在前面,也可以放在后面。且与之相关一些概念往往容易使人混淆,使用的时候很容易出错。于是重翻了《C++ Primer》,总结一下const的各种用法。

1.定义常量

const最常见的用法,将一个变量声明为const型,则其值不能再被更改。有如下两种定义方式:

const int var1 = 12;

int const var2 = 13;

第一种更为常见,此外还有两点要注意:

1)const量在声明的时候必须初始化

2)const对象默认为文件的局部变量,若要使其具有全局可见性,需要在声明的时候加上extern。

2.在函数中使用const

有以下三种用法:

1)const修饰函数参数:

void List(const List & alist);

参数不会被函数所更改,由于C++是的参数是值传递的,普通变量通常也不会被更改,因此通常是和引用配合使用。

2)const修饰函数返回值:

const int func(int arg1, int arg2);

和修饰变量是一样的,比较少见的用法。

3)const修饰类的成员函数

void display(ostream & out) const;

const修饰的成员函数不会更改其对象的数据成员,

3.const与指针

const与指针混用是const用法中最容易混淆的部分,厘清的关键在于区分清楚const修饰的是指针本身还是指针所指的对象。

1)指向const对象的指针

声明方式为:

int var1 = 12;

const int *p = var1;

*p = 15; // error: p could not change var1

这一类指针无法更改其所指向对象的值。就上面的例子来说,更改*p,比如对其赋值,是非法的。不过这个例子一个有意思的地方在于var1本身并不是const的,也就是说,虽然通过指针p不能更改var1的值,但其他方法还是可以的,比如直接对var1赋值,那么*p其实也被改变了。

对这一现象,《C++ Primer》中有个精到的描述:“指向const对象的指针可以被理解为自以为指向const对象的指针”。

2)const指针

另一种情况是const修饰的是指针本身:

int var1 = 12;

int var2 = 13;

int const *p = var1;

p = var2; // error: p could not be changed

*p = 15; // change *p is ok

这种情况下指针本身是不能改变的,但是指针所指向的对象却可以修改

4 .const引用

const引用通常代表的含义是指向const对象的引用,也就是说它和以上指针的第一种情况类似(虽然名字和第二种类似),同样它也是“自以为”的,并不能保证对象绝对不会被修改。

const引用通常用于作函数的参数,因为引用作为参数传递效率会更高,但引用会造成参数被更改,因此可以用const修饰。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值