更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

C++之const 对指针和引用的影响

  • 发布:C++培训
  • 来源:学习笔记
  • 时间:2017-10-10 14:00

const这个概念是非常重要的。首先,const变量也是一个变量,不改变变量值的操作它也都支持。

对于不改变其值的变量,尽量使用const

如果利用一个对象去初始化另外一个对象,则他们是不是const都无关紧要,因为拷贝一个对象不会改变其内容。

在const变量定义的前面加上extern关键字可以实现变量在文件之间的共享,和普通的变量一样。

const引用

const引用是不允许改变其引用内容的值的,这一点和const指针一致,但是因为引用本身也不会改变,所以它也可以看做是一个常量。

不允许把一个const值赋值给一个非const引用,因为这样默认可以改变其内容,这是不允许的。

初始化const引用时允许用任意表达式作为初始值,只要这个表达式的结果能转换成引用的类型即可,比如非const的对象、字面值或者一般的表达式。

也就是说,给非const引用赋值const值不可以,但是给const引用赋值非const值是可以的,const引用可以,const值不行。

指向常量的指针和常量指针——const指针

指向常量的指针不允许改变其指向对象的内容,也就是不能通过*p来进行赋值操作。

指向常量的指针也可以指向一个非常量对象,只不过不能通过指针来改变。

在这里,指针本身并不是一个常量,是可以被改变的,也就是说指针本来是指向a的,也可以改变它让它指向b。定义方式是const int *p

const指针——指针本身是一个常量

可以让指针一直指向一个对象,这就是常量指针,定义方式是 int *const p,从右往左,首先是一个常量,然后是一个指针。

在这种情况下,指针指向的对象的值是可以通过指针来修改的,不过指针本身的指向不能改变了。

常量指针不能指向一个常量,因为默认是可以修改的,想要指向常量得用指向常量的常量指针,const int *const p

顶层const和底层const

顶层const指的是对象这个本身是一个const,而底层const的范围就缩小到了指针和引用这两部分,代表着它所指向或者引用的对象是一个常量。

指针可以是顶层const,也可以是底层const,指向常量的常量指针。

constexpr变量——声明为constexpr的变量一定是一个常量,并且必须用常量表达式初始化。如果是一个constexpr的指针,那么只要求指针是常量就可以,对指针所指的对象没有要求。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:设计模式(C++) - 单例模式
下一篇:C++学习笔记之访问控制与继承

C语言创建windows窗口实例

C++回调函数是什么?

C++ shared_ptr和动态数组

C语言有哪些关键词,C语言44个关键词大全

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省